diff --git a/CHANGELOG b/CHANGELOG index cfb18b4..02b3806 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +1.2.3 +----- + + - Bugfix: recursion error when a contract has itself as a dependency + 1.2.2 ----- diff --git a/setup.py b/setup.py index fcb50a4..60530ea 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="py-solc-ast", - version="1.2.2", + version="1.2.3", description="A tool for exploring the abstrax syntrax tree generated by solc.", long_description=long_description, long_description_content_type="text/markdown", diff --git a/solcast/dependencies.py b/solcast/dependencies.py index f80cd90..f4a5736 100644 --- a/solcast/dependencies.py +++ b/solcast/dependencies.py @@ -37,6 +37,9 @@ def set_dependencies(source_nodes): if ref in symbol_map and symbol_map[ref].contractKind == "library": contract.dependencies.add(symbol_map[ref]) + # prevent recursion errors from self-dependency + contract.dependencies.discard(contract) + # add recursive dependencies for contract in contract_list: _add_dependencies(contract) diff --git a/tests/compiled/0x.json b/tests/compiled/0x.json new file mode 100644 index 0000000..d897f9b --- /dev/null +++ b/tests/compiled/0x.json @@ -0,0 +1 @@ +{"contracts": {"./contracts/exchange/contracts-erc20/contracts/src/interfaces/IERC20Token.sol": {"IERC20Token": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "_owner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "_spender", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "_from", "type": "address"}, {"indexed": true, "internalType": "address", "name": "_to", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "_owner", "type": "address"}, {"internalType": "address", "name": "_spender", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_spender", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "_owner", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_to", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_from", "type": "address"}, {"internalType": "address", "name": "_to", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "./contracts/exchange/contracts-erc20/contracts/src/interfaces/IEtherToken.sol": {"IEtherToken": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "_owner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "_spender", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "_from", "type": "address"}, {"indexed": true, "internalType": "address", "name": "_to", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "_owner", "type": "address"}, {"internalType": "address", "name": "_spender", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_spender", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "_owner", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "deposit", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_to", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_from", "type": "address"}, {"internalType": "address", "name": "_to", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol": {"LibEIP712ExchangeDomain": {"abi": [{"inputs": [{"internalType": "uint256", "name": "chainId", "type": "uint256"}, {"internalType": "address", "name": "verifyingContractAddressIfExists", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": true, "inputs": [], "name": "EIP712_EXCHANGE_DOMAIN_HASH", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "608060405234801561001057600080fd5b506040516101f53803806101f58339818101604052604081101561003357600080fd5b50805160209091015160006001600160a01b038216156100535781610055565b305b90506100ad6040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b81525085846100b960201b61004b1760201c565b60005550610110915050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b60d78061011e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c26cfecd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b60005481565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea265627a7a7231582026651118dc19c83552f016f390423a7346b262bd8349a825863473ebb50a046564736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1F5 CODESIZE SUB DUP1 PUSH2 0x1F5 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x53 JUMPI DUP2 PUSH2 0x55 JUMP JUMPDEST ADDRESS JUMPDEST SWAP1 POP PUSH2 0xAD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH11 0xC1E08141C9BDD1BD8DBDB PUSH1 0xAA SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x332E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP6 DUP5 PUSH2 0xB9 PUSH1 0x20 SHL PUSH2 0x4B OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SSTORE POP PUSH2 0x110 SWAP2 POP POP JUMP JUMPDEST DUP4 MLOAD PUSH1 0x20 SWAP5 DUP6 ADD KECCAK256 DUP4 MLOAD SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 MSTORE SWAP6 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xD7 DUP1 PUSH2 0x11E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC26CFECD EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x20 SWAP5 DUP6 ADD KECCAK256 DUP4 MLOAD SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 MSTORE SWAP6 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x26 PUSH6 0x1118DC19C835 MSTORE CREATE AND RETURN SWAP1 TIMESTAMP GASPRICE PUSH20 0x46B262BD8349A825863473EBB50A046564736F6C PUSH4 0x43000510 STOP ORIGIN ", "sourceMap": "665:1175:2:-;;;1354:484;8:9:-1;5:2;;;30:1;27;20:12;5:2;1354:484:2;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1354:484:2;;;;;;;1477:32;-1:-1:-1;;;;;1512:46:2;;;:97;;1577:32;1512:97;;;1569:4;1512:97;1477:132;;1649:182;1689:28;;;;;;;;;;;;;-1:-1:-1;;;1689:28:2;;;1731:31;;;;;;;;;;;;;-1:-1:-1;;;1731:31:2;;;1776:7;1797:24;1649:26;;;;;:182;;:::i;:::-;1619:27;:212;-1:-1:-1;665:1175:2;;-1:-1:-1;;665:1175:2;1285:1263:15;1997:11;;1992:2;1982:13;;;1972:37;2069:14;;2051:16;;;2041:43;;;;2158:2;2152:9;;962:66;2213:26;;2259:15;;;2252:33;;;;2305:15;;;2298:36;;;;2366:2;2354:15;;2347:32;2411:3;2399:16;;2392:43;2505:3;2487:22;;;1285:1263::o;665:1175:2:-;;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c26cfecd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b60005481565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea265627a7a7231582026651118dc19c83552f016f390423a7346b262bd8349a825863473ebb50a046564736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC26CFECD EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x20 SWAP5 DUP6 ADD KECCAK256 DUP4 MLOAD SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 MSTORE SWAP6 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x26 PUSH6 0x1118DC19C835 MSTORE CREATE AND RETURN SWAP1 TIMESTAMP GASPRICE PUSH20 0x46B262BD8349A825863473EBB50A046564736F6C PUSH4 0x43000510 STOP ORIGIN ", "sourceMap": "665:1175:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;665:1175:2;;;;;;;;;;;;;;;;;;;1066:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;1285:1263:15:-;1997:11;;1992:2;1982:13;;;1972:37;2069:14;;2051:16;;;2041:43;;;;2158:2;2152:9;;962:66;2213:26;;2259:15;;;2252:33;;;;2305:15;;;2298:36;;;;2366:2;2354:15;;2347:32;2411:3;2399:16;;2392:43;2505:3;2487:22;;;1285:1263::o"}}}}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol": {"LibExchangeRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582049ac4fcd00d3e472ecadafeeb654072f7e594d5022a3f16738d020ca971d69b364736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x49 0xAC 0x4F 0xCD STOP 0xD3 0xE4 PUSH19 0xECADAFEEB654072F7E594D5022A3F16738D020 0xCA SWAP8 SAR PUSH10 0xB364736F6C6343000510 STOP ORIGIN ", "sourceMap": "694:14164:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582049ac4fcd00d3e472ecadafeeb654072f7e594d5022a3f16738d020ca971d69b364736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x49 0xAC 0x4F 0xCD STOP 0xD3 0xE4 PUSH19 0xECADAFEEB654072F7E594D5022A3F16738D020 0xCA SWAP8 SAR PUSH10 0xB364736F6C6343000510 STOP ORIGIN ", "sourceMap": "694:14164:3:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol": {"LibFillResults": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820ef78d464c19198e1682ffe42f62c991d47a3dd6f1e2a5f7e09ec3dfca5c0715264736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xEF PUSH25 0xD464C19198E1682FFE42F62C991D47A3DD6F1E2A5F7E09EC3D 0xFC 0xA5 0xC0 PUSH18 0x5264736F6C63430005100032000000000000 ", "sourceMap": "716:21347:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820ef78d464c19198e1682ffe42f62c991d47a3dd6f1e2a5f7e09ec3dfca5c0715264736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xEF PUSH25 0xD464C19198E1682FFE42F62C991D47A3DD6F1E2A5F7E09EC3D 0xFC 0xA5 0xC0 PUSH18 0x5264736F6C63430005100032000000000000 ", "sourceMap": "716:21347:4:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibMath.sol": {"LibMath": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158205eb8fa2daadcd0448b85d1ffe4a04bd66ad83a6b6d21ff2eceeff86b1172ae8264736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x5E 0xB8 STATICCALL 0x2D 0xAA 0xDC 0xD0 DIFFICULTY DUP12 DUP6 0xD1 SELFDESTRUCT 0xE4 LOG0 0x4B 0xD6 PUSH11 0xD83A6B6D21FF2ECEEFF86B GT PUSH19 0xAE8264736F6C63430005100032000000000000 ", "sourceMap": "763:6879:5:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158205eb8fa2daadcd0448b85d1ffe4a04bd66ad83a6b6d21ff2eceeff86b1172ae8264736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x5E 0xB8 STATICCALL 0x2D 0xAA 0xDC 0xD0 DIFFICULTY DUP12 DUP6 0xD1 SELFDESTRUCT 0xE4 LOG0 0x4B 0xD6 PUSH11 0xD83A6B6D21FF2ECEEFF86B GT PUSH19 0xAE8264736F6C63430005100032000000000000 ", "sourceMap": "763:6879:5:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibMathRichErrors.sol": {"LibMathRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158202a8dea59f83e7182a6f95e44d2d218e7cfc9873a1db0712ab9e2b131e8afdbd764736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x2A DUP14 0xEA MSIZE 0xF8 RETURNDATACOPY PUSH18 0x82A6F95E44D2D218E7CFC9873A1DB0712AB9 0xE2 0xB1 BALANCE 0xE8 0xAF 0xDB 0xD7 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "26:831:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158202a8dea59f83e7182a6f95e44d2d218e7cfc9873a1db0712ab9e2b131e8afdbd764736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x2A DUP14 0xEA MSIZE 0xF8 RETURNDATACOPY PUSH18 0x82A6F95E44D2D218E7CFC9873A1DB0712AB9 0xE2 0xB1 BALANCE 0xE8 0xAF 0xDB 0xD7 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "26:831:6:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol": {"LibOrder": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582004fd7e4da48178ea38657013984219795c31e9399a61dd2f5c881edf6890bcda64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 DIV REVERT PUSH31 0x4DA48178EA38657013984219795C31E9399A61DD2F5C881EDF6890BCDA6473 PUSH16 0x6C634300051000320000000000000000 ", "sourceMap": "665:7281:7:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582004fd7e4da48178ea38657013984219795c31e9399a61dd2f5c881edf6890bcda64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 DIV REVERT PUSH31 0x4DA48178EA38657013984219795C31E9399A61DD2F5C881EDF6890BCDA6473 PUSH16 0x6C634300051000320000000000000000 ", "sourceMap": "665:7281:7:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol": {"LibZeroExTransaction": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60636023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea365627a7a7231582008131ce75a8cdca14374c9b07bf799f7c4440bb3bdf7032badd3280036dab9f06c6578706572696d656e74616cf564736f6c63430005100040", "opcodes": "PUSH1 0x63 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 ADDMOD SGT SHR 0xE7 GAS DUP13 0xDC LOG1 NUMBER PUSH21 0xC9B07BF799F7C4440BB3BDF7032BADD3280036DAB9 CREATE PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV LT STOP BLOCKHASH ", "sourceMap": "699:3631:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea365627a7a7231582008131ce75a8cdca14374c9b07bf799f7c4440bb3bdf7032badd3280036dab9f06c6578706572696d656e74616cf564736f6c63430005100040", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 ADDMOD SGT SHR 0xE7 GAS DUP13 0xDC LOG1 NUMBER PUSH21 0xC9B07BF799F7C4440BB3BDF7032BADD3280036DAB9 CREATE PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV LT STOP BLOCKHASH ", "sourceMap": "699:3631:8:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-staking/contracts/src/interfaces/IStaking.sol": {"IStaking": {"abi": [{"constant": false, "inputs": [{"internalType": "address", "name": "addr", "type": "address"}], "name": "addExchangeAddress", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}, {"internalType": "address", "name": "member", "type": "address"}], "name": "computeRewardBalanceOfDelegator", "outputs": [{"internalType": "uint256", "name": "reward", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "computeRewardBalanceOfOperator", "outputs": [{"internalType": "uint256", "name": "reward", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint32", "name": "operatorShare", "type": "uint32"}, {"internalType": "bool", "name": "addOperatorAsMaker", "type": "bool"}], "name": "createStakingPool", "outputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}, {"internalType": "uint32", "name": "newOperatorShare", "type": "uint32"}], "name": "decreaseStakingPoolOperatorShare", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "endEpoch", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "finalizePool", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "getCurrentEpochEarliestEndTimeInSeconds", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "enum IStructs.StakeStatus", "name": "stakeStatus", "type": "uint8"}], "name": "getGlobalStakeByStatus", "outputs": [{"components": [{"internalType": "uint64", "name": "currentEpoch", "type": "uint64"}, {"internalType": "uint96", "name": "currentEpochBalance", "type": "uint96"}, {"internalType": "uint96", "name": "nextEpochBalance", "type": "uint96"}], "internalType": "struct IStructs.StoredBalance", "name": "balance", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}, {"internalType": "enum IStructs.StakeStatus", "name": "stakeStatus", "type": "uint8"}], "name": "getOwnerStakeByStatus", "outputs": [{"components": [{"internalType": "uint64", "name": "currentEpoch", "type": "uint64"}, {"internalType": "uint96", "name": "currentEpochBalance", "type": "uint96"}, {"internalType": "uint96", "name": "nextEpochBalance", "type": "uint96"}], "internalType": "struct IStructs.StoredBalance", "name": "balance", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getParams", "outputs": [{"internalType": "uint256", "name": "_epochDurationInSeconds", "type": "uint256"}, {"internalType": "uint32", "name": "_rewardDelegatedStakeWeight", "type": "uint32"}, {"internalType": "uint256", "name": "_minimumPoolStake", "type": "uint256"}, {"internalType": "uint32", "name": "_cobbDouglasAlphaNumerator", "type": "uint32"}, {"internalType": "uint32", "name": "_cobbDouglasAlphaDenominator", "type": "uint32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}, {"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "getStakeDelegatedToPoolByOwner", "outputs": [{"components": [{"internalType": "uint64", "name": "currentEpoch", "type": "uint64"}, {"internalType": "uint96", "name": "currentEpochBalance", "type": "uint96"}, {"internalType": "uint96", "name": "nextEpochBalance", "type": "uint96"}], "internalType": "struct IStructs.StoredBalance", "name": "balance", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "getStakingPool", "outputs": [{"components": [{"internalType": "address", "name": "operator", "type": "address"}, {"internalType": "uint32", "name": "operatorShare", "type": "uint32"}], "internalType": "struct IStructs.Pool", "name": "", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "getStakingPoolStatsThisEpoch", "outputs": [{"components": [{"internalType": "uint256", "name": "feesCollected", "type": "uint256"}, {"internalType": "uint256", "name": "weightedStake", "type": "uint256"}, {"internalType": "uint256", "name": "membersStake", "type": "uint256"}], "internalType": "struct IStructs.PoolStats", "name": "", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "getTotalStakeDelegatedToPool", "outputs": [{"components": [{"internalType": "uint64", "name": "currentEpoch", "type": "uint64"}, {"internalType": "uint96", "name": "currentEpochBalance", "type": "uint96"}, {"internalType": "uint96", "name": "nextEpochBalance", "type": "uint96"}], "internalType": "struct IStructs.StoredBalance", "name": "balance", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getWethContract", "outputs": [{"internalType": "contract IEtherToken", "name": "wethContract", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getZrxVault", "outputs": [{"internalType": "contract IZrxVault", "name": "zrxVault", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "init", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "joinStakingPoolAsMaker", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "enum IStructs.StakeStatus", "name": "status", "type": "uint8"}, {"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "internalType": "struct IStructs.StakeInfo", "name": "from", "type": "tuple"}, {"components": [{"internalType": "enum IStructs.StakeStatus", "name": "status", "type": "uint8"}, {"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "internalType": "struct IStructs.StakeInfo", "name": "to", "type": "tuple"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "moveStake", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "payerAddress", "type": "address"}, {"internalType": "uint256", "name": "protocolFee", "type": "uint256"}], "name": "payProtocolFee", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "addr", "type": "address"}], "name": "removeExchangeAddress", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "_epochDurationInSeconds", "type": "uint256"}, {"internalType": "uint32", "name": "_rewardDelegatedStakeWeight", "type": "uint32"}, {"internalType": "uint256", "name": "_minimumPoolStake", "type": "uint256"}, {"internalType": "uint32", "name": "_cobbDouglasAlphaNumerator", "type": "uint32"}, {"internalType": "uint32", "name": "_cobbDouglasAlphaDenominator", "type": "uint32"}], "name": "setParams", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "stake", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "unstake", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "withdrawDelegatorRewards", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "./contracts/exchange/contracts-staking/contracts/src/interfaces/IStructs.sol": {"IStructs": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158204f0b5393c04cea05e8eb8f224656b44bb67f074a5897684815d3d9942ce4dfe764736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4F SIGNEXTEND MSTORE8 SWAP4 0xC0 0x4C 0xEA SDIV 0xE8 0xEB DUP16 0x22 CHAINID JUMP 0xB4 0x4B 0xB6 PUSH32 0x74A5897684815D3D9942CE4DFE764736F6C6343000510003200000000000000 ", "sourceMap": "606:2780:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;606:2780:10;;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "6080604052600080fdfea265627a7a723158204f0b5393c04cea05e8eb8f224656b44bb67f074a5897684815d3d9942ce4dfe764736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4F SIGNEXTEND MSTORE8 SWAP4 0xC0 0x4C 0xEA SDIV 0xE8 0xEB DUP16 0x22 CHAINID JUMP 0xB4 0x4B 0xB6 PUSH32 0x74A5897684815D3D9942CE4DFE764736F6C6343000510003200000000000000 ", "sourceMap": "606:2780:10:-;;;;;"}}}}, "./contracts/exchange/contracts-staking/contracts/src/interfaces/IZrxVault.sol": {"IZrxVault": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "staker", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "Deposit", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "sender", "type": "address"}], "name": "InCatastrophicFailureMode", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "stakingProxyAddress", "type": "address"}], "name": "StakingProxySet", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "staker", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "Withdraw", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "zrxProxyAddress", "type": "address"}], "name": "ZrxProxySet", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "balanceOfZrxVault", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "depositFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "enterCatastrophicFailure", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_stakingProxyAddress", "type": "address"}], "name": "setStakingProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "zrxProxyAddress", "type": "address"}], "name": "setZrxProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}], "name": "withdrawAllFrom", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "withdrawFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "./contracts/exchange/contracts-utils/contracts/src/LibBytes.sol": {"LibBytes": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820fefe35f4cd0d01fc1ad0c5a81c6c72fd04244f1d471941a8520092bb510bcd4f64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 INVALID INVALID CALLDATALOAD DELEGATECALL 0xCD 0xD ADD 0xFC BYTE 0xD0 0xC5 0xA8 SHR PUSH13 0x72FD04244F1D471941A8520092 0xBB MLOAD SIGNEXTEND 0xCD 0x4F PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "672:17543:12:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820fefe35f4cd0d01fc1ad0c5a81c6c72fd04244f1d471941a8520092bb510bcd4f64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 INVALID INVALID CALLDATALOAD DELEGATECALL 0xCD 0xD ADD 0xFC BYTE 0xD0 0xC5 0xA8 SHR PUSH13 0x72FD04244F1D471941A8520092 0xBB MLOAD SIGNEXTEND 0xCD 0x4F PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "672:17543:12:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-utils/contracts/src/LibBytesRichErrors.sol": {"LibBytesRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201f502234b24c306eb013474bbe9b6eb56449367295cb86ffad79608418d6cc8d64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x1F POP 0x22 CALLVALUE 0xB2 0x4C ADDRESS PUSH15 0xB013474BBE9B6EB56449367295CB86 SELFDESTRUCT 0xAD PUSH26 0x608418D6CC8D64736F6C63430005100032000000000000000000 ", "sourceMap": "606:1066:13:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201f502234b24c306eb013474bbe9b6eb56449367295cb86ffad79608418d6cc8d64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x1F POP 0x22 CALLVALUE 0xB2 0x4C ADDRESS PUSH15 0xB013474BBE9B6EB56449367295CB86 SELFDESTRUCT 0xAD PUSH26 0x608418D6CC8D64736F6C63430005100032000000000000000000 ", "sourceMap": "606:1066:13:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-utils/contracts/src/LibEIP1271.sol": {"LibEIP1271": {"abi": [{"constant": true, "inputs": [], "name": "EIP1271_MAGIC_VALUE", "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}], "payable": false, "stateMutability": "view", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "6080604052348015600f57600080fd5b5060908061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063dd885e2d14602d575b600080fd5b60336050565b604080516001600160e01b03199092168252519081900360200190f35b6320c13b0b60e01b8156fea265627a7a7231582044daec2b4df9536ae805111475f416372d8b0378e69eb3cec92d3c42fc59a67864736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x90 DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDD885E2D EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH4 0x20C13B0B PUSH1 0xE0 SHL DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 DIFFICULTY 0xDA 0xEC 0x2B 0x4D 0xF9 MSTORE8 PUSH11 0xE805111475F416372D8B03 PUSH25 0xE69EB3CEC92D3C42FC59A67864736F6C634300051000320000 ", "sourceMap": "606:181:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;606:181:14;;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063dd885e2d14602d575b600080fd5b60336050565b604080516001600160e01b03199092168252519081900360200190f35b6320c13b0b60e01b8156fea265627a7a7231582044daec2b4df9536ae805111475f416372d8b0378e69eb3cec92d3c42fc59a67864736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDD885E2D EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH4 0x20C13B0B PUSH1 0xE0 SHL DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 DIFFICULTY 0xDA 0xEC 0x2B 0x4D 0xF9 MSTORE8 PUSH11 0xE805111475F416372D8B03 PUSH25 0xE69EB3CEC92D3C42FC59A67864736F6C634300051000320000 ", "sourceMap": "606:181:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;606:181:14;;;;;;;;;;;;;;;;;;;729:55;;;:::i;:::-;;;;-1:-1:-1;;;;;;729:55:14;;;;;;;;;;;;;;;-1:-1:-1;;;729:55:14;:::o"}}}}, "./contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol": {"LibEIP712": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582059a9c3fd31fb37b59eb9a5b77eb1df7b7e89d8bc438d4128dbafffaca1a9b07564736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 MSIZE 0xA9 0xC3 REVERT BALANCE 0xFB CALLDATACOPY 0xB5 SWAP15 0xB9 0xA5 0xB7 PUSH31 0xB1DF7B7E89D8BC438D4128DBAFFFACA1A9B07564736F6C6343000510003200 ", "sourceMap": "606:3175:15:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582059a9c3fd31fb37b59eb9a5b77eb1df7b7e89d8bc438d4128dbafffaca1a9b07564736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 MSIZE 0xA9 0xC3 REVERT BALANCE 0xFB CALLDATACOPY 0xB5 SWAP15 0xB9 0xA5 0xB7 PUSH31 0xB1DF7B7E89D8BC438D4128DBAFFFACA1A9B07564736F6C6343000510003200 ", "sourceMap": "606:3175:15:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-utils/contracts/src/LibOwnableRichErrors.sol": {"LibOwnableRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582020bcc1e69fc51de238d6dbffab1f8290cff348e892a0d6038ab439f42e27adec64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 KECCAK256 0xBC 0xC1 0xE6 SWAP16 0xC5 SAR 0xE2 CODESIZE 0xD6 0xDB SELFDESTRUCT 0xAB 0x1F DUP3 SWAP1 0xCF RETURN 0x48 0xE8 SWAP3 LOG0 0xD6 SUB DUP11 0xB4 CODECOPY DELEGATECALL 0x2E 0x27 0xAD 0xEC PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "26:804:16:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582020bcc1e69fc51de238d6dbffab1f8290cff348e892a0d6038ab439f42e27adec64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 KECCAK256 0xBC 0xC1 0xE6 SWAP16 0xC5 SAR 0xE2 CODESIZE 0xD6 0xDB SELFDESTRUCT 0xAB 0x1F DUP3 SWAP1 0xCF RETURN 0x48 0xE8 SWAP3 LOG0 0xD6 SUB DUP11 0xB4 CODECOPY DELEGATECALL 0x2E 0x27 0xAD 0xEC PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "26:804:16:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-utils/contracts/src/LibReentrancyGuardRichErrors.sol": {"LibReentrancyGuardRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820de4ccbe9bca2bade9112e778b53431bca8df0542a96f2374082499179794021a64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xDE 0x4C 0xCB 0xE9 0xBC LOG2 0xBA 0xDE SWAP2 SLT 0xE7 PUSH25 0xB53431BCA8DF0542A96F2374082499179794021A64736F6C63 NUMBER STOP SDIV LT STOP ORIGIN ", "sourceMap": "606:398:17:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820de4ccbe9bca2bade9112e778b53431bca8df0542a96f2374082499179794021a64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xDE 0x4C 0xCB 0xE9 0xBC LOG2 0xBA 0xDE SWAP2 SLT 0xE7 PUSH25 0xB53431BCA8DF0542A96F2374082499179794021A64736F6C63 NUMBER STOP SDIV LT STOP ORIGIN ", "sourceMap": "606:398:17:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol": {"LibRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158209c36ab2fc73f406f3516743e8b1f47681882bd73386a23a26ea66dbe8f518bb964736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP13 CALLDATASIZE 0xAB 0x2F 0xC7 EXTCODEHASH BLOCKHASH PUSH16 0x3516743E8B1F47681882BD73386A23A2 PUSH15 0xA66DBE8F518BB964736F6C63430005 LT STOP ORIGIN ", "sourceMap": "606:1077:18:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158209c36ab2fc73f406f3516743e8b1f47681882bd73386a23a26ea66dbe8f518bb964736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP13 CALLDATASIZE 0xAB 0x2F 0xC7 EXTCODEHASH BLOCKHASH PUSH16 0x3516743E8B1F47681882BD73386A23A2 PUSH15 0xA66DBE8F518BB964736F6C63430005 LT STOP ORIGIN ", "sourceMap": "606:1077:18:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol": {"LibSafeMath": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206fa31dda88674256e597effa0242ddc5be31fa278156dc876cabe2412c07b69d64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH16 0xA31DDA88674256E597EFFA0242DDC5BE BALANCE STATICCALL 0x27 DUP2 JUMP 0xDC DUP8 PUSH13 0xABE2412C07B69D64736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "95:1908:19:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206fa31dda88674256e597effa0242ddc5be31fa278156dc876cabe2412c07b69d64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH16 0xA31DDA88674256E597EFFA0242DDC5BE BALANCE STATICCALL 0x27 DUP2 JUMP 0xDC DUP8 PUSH13 0xABE2412C07B69D64736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "95:1908:19:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-utils/contracts/src/LibSafeMathRichErrors.sol": {"LibSafeMathRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158205e9fe8776cadd24bc2c0616bdc00002cc5ce327ad01c6b307627139a3dfa339964736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x5E SWAP16 0xE8 PUSH24 0x6CADD24BC2C0616BDC00002CC5CE327AD01C6B307627139A RETURNDATASIZE STATICCALL CALLER SWAP10 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "26:1332:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158205e9fe8776cadd24bc2c0616bdc00002cc5ce327ad01c6b307627139a3dfa339964736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x5E SWAP16 0xE8 PUSH24 0x6CADD24BC2C0616BDC00002CC5CE327AD01C6B307627139A RETURNDATASIZE STATICCALL CALLER SWAP10 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "26:1332:20:-;;;;;;;;"}}}}, "./contracts/exchange/contracts-utils/contracts/src/Ownable.sol": {"Ownable": {"abi": [{"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "previousOwner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "OwnershipTransferred", "type": "event"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "608060405234801561001057600080fd5b50600080546001600160a01b031916331790556101e8806100326000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461005f575b600080fd5b610043610087565b604080516001600160a01b039092168252519081900360200190f35b6100856004803603602081101561007557600080fd5b50356001600160a01b0316610096565b005b6000546001600160a01b031681565b61009e61010d565b6001600160a01b0381166100c1576100bc6100b761013c565b61015a565b61010a565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b6000546001600160a01b0316331461013a5760005461013a906100b79033906001600160a01b0316610162565b565b604080518082019091526004815263734f6e1f60e11b602082015290565b805160208201fd5b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316631de45ad160e01b1790529291505056fea265627a7a723158207e8289d5f24badc4a3de531a508adbde14a84160127e166f21c92a04c869b59564736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x1E8 DUP1 PUSH2 0x32 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x85 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x96 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x9E PUSH2 0x10D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC1 JUMPI PUSH2 0xBC PUSH2 0xB7 PUSH2 0x13C JUMP JUMPDEST PUSH2 0x15A JUMP JUMPDEST PUSH2 0x10A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13A JUMPI PUSH1 0x0 SLOAD PUSH2 0x13A SWAP1 PUSH2 0xB7 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x162 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH31 0x8289D5F24BADC4A3DE531A508ADBDE14A84160127E166F21C92A04C869B595 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "710:979:21:-;;;854:69;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;898:5:21;:18;;-1:-1:-1;;;;;;898:18:21;906:10;898:18;;;710:979;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461005f575b600080fd5b610043610087565b604080516001600160a01b039092168252519081900360200190f35b6100856004803603602081101561007557600080fd5b50356001600160a01b0316610096565b005b6000546001600160a01b031681565b61009e61010d565b6001600160a01b0381166100c1576100bc6100b761013c565b61015a565b61010a565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b6000546001600160a01b0316331461013a5760005461013a906100b79033906001600160a01b0316610162565b565b604080518082019091526004815263734f6e1f60e11b602082015290565b805160208201fd5b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316631de45ad160e01b1790529291505056fea265627a7a723158207e8289d5f24badc4a3de531a508adbde14a84160127e166f21c92a04c869b59564736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x85 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x96 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x9E PUSH2 0x10D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC1 JUMPI PUSH2 0xBC PUSH2 0xB7 PUSH2 0x13C JUMP JUMPDEST PUSH2 0x15A JUMP JUMPDEST PUSH2 0x10A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13A JUMPI PUSH1 0x0 SLOAD PUSH2 0x13A SWAP1 PUSH2 0xB7 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x162 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH31 0x8289D5F24BADC4A3DE531A508ADBDE14A84160127E166F21C92A04C869B595 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "710:979:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;710:979:21;;;;;;;;;;;;;;;;;;;;;;;;827:20;;;:::i;:::-;;;;-1:-1:-1;;;;;827:20:21;;;;;;;;;;;;;;1097:329;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1097:329:21;-1:-1:-1;;;;;1097:329:21;;:::i;:::-;;827:20;;;-1:-1:-1;;;;;827:20:21;;:::o;1097:329::-;960:22;:20;:22::i;:::-;-1:-1:-1;;;;;1193:22:21;;1189:231;;1231:70;1253:47;:45;:47::i;:::-;1231:21;:70::i;:::-;1189:231;;;1332:5;:16;;-1:-1:-1;;;;;;1332:16:21;-1:-1:-1;;;;;1332:16:21;;;;;;;1367:42;;1332:16;;1388:10;;1367:42;;1332:5;1367:42;1189:231;1097:329;:::o;1432:255::-;1526:5;;-1:-1:-1;;;;;1526:5:21;1512:10;:19;1508:173;;1650:5;;1547:123;;1569:100;;1622:10;;-1:-1:-1;;;;;1650:5:21;1569:35;:100::i;1547:123::-;1432:255::o;669:159:16:-;787:34;;;;;;;;;;;;-1:-1:-1;;;787:34:16;;;;669:159;:::o;1511:170:18:-;1654:9;1648:16;1641:4;1630:9;1626:20;1619:46;387:276:16;546:110;;;-1:-1:-1;;;;;546:110:16;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;546:110:16;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;387:276:16;;;;:::o"}}}}, "./contracts/exchange/contracts-utils/contracts/src/ReentrancyGuard.sol": {"ReentrancyGuard": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60806040526000805460ff19169055348015601957600080fd5b50603e8060276000396000f3fe6080604052600080fdfea265627a7a72315820fb0f7f5750addc60aaa2dbb6bb4363159edf5c599b3c18a7ea52ba6163d7f5e064736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH1 0x19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x27 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xFB 0xF PUSH32 0x5750ADDC60AAA2DBB6BB4363159EDF5C599B3C18A7EA52BA6163D7F5E064736F PUSH13 0x63430005100032000000000000 ", "sourceMap": "682:778:22:-;;;767:5;744:28;;-1:-1:-1;;744:28:22;;;682:778;5:2:-1;;;;30:1;27;20:12;5:2;682:778:22;;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "6080604052600080fdfea265627a7a72315820fb0f7f5750addc60aaa2dbb6bb4363159edf5c599b3c18a7ea52ba6163d7f5e064736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xFB 0xF PUSH32 0x5750ADDC60AAA2DBB6BB4363159EDF5C599B3C18A7EA52BA6163D7F5E064736F PUSH13 0x63430005100032000000000000 ", "sourceMap": "682:778:22:-;;;;;"}}}}, "./contracts/exchange/contracts-utils/contracts/src/Refundable.sol": {"Refundable": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60806040526000805460ff19169055348015601957600080fd5b50603e8060276000396000f3fe6080604052600080fdfea265627a7a723158203073279fc243fe8d659c1c3e7d25c39040e9f4b5200a25223fbf45cb51328cc864736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH1 0x19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x27 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 ADDRESS PUSH20 0x279FC243FE8D659C1C3E7D25C39040E9F4B5200A 0x25 0x22 EXTCODEHASH 0xBF GASLIMIT 0xCB MLOAD ORIGIN DUP13 0xC8 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "639:1375:23:-;;;767:5:22;744:28;;-1:-1:-1;;744:28:22;;;639:1375:23;5:2:-1;;;;30:1;27;20:12;5:2;639:1375:23;;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "6080604052600080fdfea265627a7a723158203073279fc243fe8d659c1c3e7d25c39040e9f4b5200a25223fbf45cb51328cc864736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 ADDRESS PUSH20 0x279FC243FE8D659C1C3E7D25C39040E9F4B5200A 0x25 0x22 EXTCODEHASH 0xBF GASLIMIT 0xCB MLOAD ORIGIN DUP13 0xC8 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "639:1375:23:-;;;;;"}}}}, "./contracts/exchange/contracts-utils/contracts/src/interfaces/IOwnable.sol": {"IOwnable": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "previousOwner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "OwnershipTransferred", "type": "event"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/Exchange.sol": {"Exchange": {"abi": [{"inputs": [{"internalType": "uint256", "name": "chainId", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes4", "name": "id", "type": "bytes4"}, {"indexed": false, "internalType": "address", "name": "assetProxy", "type": "address"}], "name": "AssetProxyRegistered", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}], "name": "Cancel", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "orderSenderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "orderEpoch", "type": "uint256"}], "name": "CancelUpTo", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"indexed": false, "internalType": "address", "name": "takerAddress", "type": "address"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "name": "Fill", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "previousOwner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "OwnershipTransferred", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "oldProtocolFeeCollector", "type": "address"}, {"indexed": false, "internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "ProtocolFeeCollectorAddress", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "uint256", "name": "oldProtocolFeeMultiplier", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "ProtocolFeeMultiplier", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "signerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "validatorAddress", "type": "address"}, {"indexed": false, "internalType": "bool", "name": "isApproved", "type": "bool"}], "name": "SignatureValidatorApproval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "bytes32", "name": "transactionHash", "type": "bytes32"}], "name": "TransactionExecution", "type": "event"}, {"constant": true, "inputs": [], "name": "EIP1271_MAGIC_VALUE", "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "EIP712_EXCHANGE_DOMAIN_HASH", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "allowedValidators", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}], "name": "batchCancelOrders", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction[]", "name": "transactions", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchExecuteTransactions", "outputs": [{"internalType": "bytes[]", "name": "returnData", "type": "bytes[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrKillOrders", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrders", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "leftOrders", "type": "tuple[]"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "rightOrders", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "leftSignatures", "type": "bytes[]"}, {"internalType": "bytes[]", "name": "rightSignatures", "type": "bytes[]"}], "name": "batchMatchOrders", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "left", "type": "tuple[]"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "right", "type": "tuple[]"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.BatchMatchedFillResults", "name": "batchMatchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "leftOrders", "type": "tuple[]"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "rightOrders", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "leftSignatures", "type": "bytes[]"}, {"internalType": "bytes[]", "name": "rightSignatures", "type": "bytes[]"}], "name": "batchMatchOrdersWithMaximalFill", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "left", "type": "tuple[]"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "right", "type": "tuple[]"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.BatchMatchedFillResults", "name": "batchMatchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "cancelOrder", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "targetOrderEpoch", "type": "uint256"}], "name": "cancelOrdersUpTo", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "cancelled", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "currentContextAddress", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "detachProtocolFeeCollector", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "executeTransaction", "outputs": [{"internalType": "bytes", "name": "", "type": "bytes"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "fillOrKillOrder", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "fillOrder", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "filled", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes4", "name": "assetProxyId", "type": "bytes4"}], "name": "getAssetProxy", "outputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "getOrderInfo", "outputs": [{"components": [{"internalType": "enum LibOrder.OrderStatus", "name": "orderStatus", "type": "uint8"}, {"internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256"}], "internalType": "struct LibOrder.OrderInfo", "name": "orderInfo", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidHashSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidOrderSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidTransactionSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "makerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketBuyOrdersFillOrKill", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "makerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketBuyOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketSellOrdersFillOrKill", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketSellOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "leftOrder", "type": "tuple"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "rightOrder", "type": "tuple"}, {"internalType": "bytes", "name": "leftSignature", "type": "bytes"}, {"internalType": "bytes", "name": "rightSignature", "type": "bytes"}], "name": "matchOrders", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "left", "type": "tuple"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "right", "type": "tuple"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.MatchedFillResults", "name": "matchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "leftOrder", "type": "tuple"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "rightOrder", "type": "tuple"}, {"internalType": "bytes", "name": "leftSignature", "type": "bytes"}, {"internalType": "bytes", "name": "rightSignature", "type": "bytes"}], "name": "matchOrdersWithMaximalFill", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "left", "type": "tuple"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "right", "type": "tuple"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.MatchedFillResults", "name": "matchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "orderEpoch", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}], "name": "preSign", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "address", "name": "", "type": "address"}], "name": "preSigned", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeCollector", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeMultiplier", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "name": "registerAssetProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "setProtocolFeeCollectorAddress", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "setProtocolFeeMultiplier", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "validatorAddress", "type": "address"}, {"internalType": "bool", "name": "approval", "type": "bool"}], "name": "setSignatureValidatorApproval", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes[]", "name": "assetData", "type": "bytes[]"}, {"internalType": "address[]", "name": "fromAddresses", "type": "address[]"}, {"internalType": "address[]", "name": "toAddresses", "type": "address[]"}, {"internalType": "uint256[]", "name": "amounts", "type": "uint256[]"}], "name": "simulateDispatchTransferFromCalls", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "transactionsExecuted", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "60806040526000805460ff60a01b191690553480156200001e57600080fd5b50604051620056bc380380620056bc83398101604081905262000041916200012a565b600080546001600160a01b03191633178155819080309050620000b26040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b8152508584620000c060201b620054a21760201c565b600155506200017092505050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b8051620001248162000156565b92915050565b6000602082840312156200013d57600080fd5b60006200014b848462000117565b949350505050565b90565b620001618162000153565b81146200016d57600080fd5b50565b61553c80620001806000396000f3fe60806040526004361061025c5760003560e01c80638d45cd2311610144578063beee2e14116100b6578063dd885e2d1161007a578063dd885e2d1461066d578063dedfc1f11461068f578063e14b58c4146106a2578063eea086ba146106b5578063f2fde38b146106ca578063fc74896d146106ea5761025c565b8063beee2e14146105e5578063c0fa16cc146105f8578063c26cfecd14610618578063c585bb931461062d578063d9bfa73e1461064d5761025c565b80639b44d556116101085780639b44d5561461053f5780639d3fa4b914610552578063a12dcc6f1461057f578063a6c3bf331461059f578063b04fbddd146105b2578063b718e292146105d25761025c565b80638d45cd23146104b75780638da5cb5b146104d75780638ea8dfe4146104ec5780639331c7421461050c5780639694a4021461052c5761025c565b806360704108116101dd5780637b8e3514116101a15780637b8e35141461040f5780638171c4071461042f57806382c174d01461044f578063850a15011461046f57806388ec79fb146104845780638bc8efb3146104a45761025c565b806360704108146103895780636a1a80fd146103b65780636fcf3e9e146103d657806377fcce68146103e957806378d29ac1146103fc5761025c565b80632ac12622116102245780632ac12622146103105780632da6298714610330578063369da0991461034357806346c02d7a146103635780634f9559b1146103765761025c565b80630228e168146102615780630efca185146102975780631ce4c78b146102ae5780632280c910146102d0578063288cdc91146102f0575b600080fd5b34801561026d57600080fd5b5061028161027c366004614584565b61070a565b60405161028e9190614e73565b60405180910390f35b3480156102a357600080fd5b506102ac61071f565b005b3480156102ba57600080fd5b506102c3610733565b60405161028e9190614e81565b6102e36102de3660046147fe565b610739565b60405161028e9190615007565b3480156102fc57600080fd5b506102c361030b366004614584565b61077b565b34801561031c57600080fd5b5061028161032b366004614584565b61078d565b6102ac61033e366004614675565b6107a2565b6103566103513660046144df565b6107c6565b60405161028e9190615252565b6102ac610371366004614584565b6108ed565b6102ac610384366004614584565b610935565b34801561039557600080fd5b506103a96103a436600461461b565b610a1b565b60405161028e9190614db8565b6103c96103c436600461439e565b610a44565b60405161028e9190615241565b6103c96103e436600461439e565b610a7c565b6102ac6103f736600461427e565b610a9a565b61035661040a3660046144df565b610b32565b34801561041b57600080fd5b5061028161042a366004614244565b610c82565b34801561043b57600080fd5b5061028161044a3660046145c1565b610ca2565b34801561045b57600080fd5b5061028161046a3660046145a2565b610d01565b34801561047b57600080fd5b506103a9610d21565b610497610492366004614706565b610d30565b60405161028e9190615260565b6103566104b23660046144df565b610d4e565b3480156104c357600080fd5b506102816104d23660046147fe565b610d82565b3480156104e357600080fd5b506103a9610da7565b6104ff6104fa36600461444e565b610db6565b60405161028e9190614e62565b34801561051857600080fd5b506102ac610527366004614584565b610ee1565b6104ff61053a36600461444e565b610f29565b61035661054d3660046147b6565b610ff0565b34801561055e57600080fd5b5061057261056d366004614675565b611015565b60405161028e919061526f565b34801561058b57600080fd5b5061028161059a3660046146a9565b6110fd565b6103566105ad3660046144df565b611122565b3480156105be57600080fd5b506102ac6105cd3660046142ae565b611156565b6104976105e0366004614706565b6111e8565b6104ff6105f336600461444e565b611206565b34801561060457600080fd5b506102ac610613366004614226565b6112bb565b34801561062457600080fd5b506102c36112cc565b34801561063957600080fd5b506102ac610648366004614226565b6112d2565b34801561065957600080fd5b506102c3610668366004614244565b6113f7565b34801561067957600080fd5b50610682611414565b60405161028e9190614feb565b6102ac61069d36600461436a565b61141f565b6103566106b03660046147b6565b611461565b3480156106c157600080fd5b506103a961147c565b3480156106d657600080fd5b506102ac6106e5366004614226565b61148b565b6106fd6106f8366004614527565b6114fc565b60405161028e9190614e51565b60056020526000908152604090205460ff1681565b610727611625565b6107316000611652565b565b60035481565b60606107436116bb565b156107595761075283836116cb565b9050610775565b6107616117c7565b61076b83836116cb565b90506107756117dc565b92915050565b60096020526000908152604090205481565b600a6020526000908152604090205460ff1681565b6107aa6117f1565b6107b381611823565b6107bb611868565b6107c361187c565b50565b6107ce613b9d565b6107d66116bb565b1561086c57835160005b81811461086557600061080084602001518761188b90919063ffffffff16565b905061080a613b9d565b61083b88848151811061081957fe5b60200260200101518388868151811061082e57fe5b60200260200101516118aa565b9050610847858261199b565b94508685602001511061085b575050610865565b50506001016107e0565b50506108e6565b6108746117c7565b835160005b8181146108dc57600061089984602001518761188b90919063ffffffff16565b90506108a3613b9d565b6108b288848151811061081957fe5b90506108be858261199b565b9450868560200151106108d25750506108dc565b5050600101610879565b50506108e66117dc565b9392505050565b6108f56117f1565b60006108ff611a36565b60008381526007602090815260408083206001600160a01b03909416835292905220805460ff19166001179055506107bb611868565b61093d6117f1565b6000610947611a36565b905060006001600160a01b03821633146109615733610964565b60005b6001600160a01b038084166000908152600b602090815260408083209385168352929052205490915060018401908082116109ac576109ac6109a7858584611a5b565b611ab5565b6001600160a01b038085166000818152600b602090815260408083209488168084529490915290819020859055517f82af639571738f4ebd4268fb0363d8957ebe1bbb9e78dba5ebd69eed39b154f090610a07908690614e81565b60405180910390a3505050506107bb611868565b6001600160e01b031981166000908152600260205260409020546001600160a01b03165b919050565b610a4c613bcc565b610a546117f1565b610a62858585856001611abd565b9050610a6c611868565b610a7461187c565b949350505050565b610a84613bcc565b610a8c6117f1565b610a62858585856000611abd565b610aa26117f1565b6000610aac611a36565b6001600160a01b0381811660008181526008602090815260408083209489168084529490915290819020805460ff19168715151790555192935090917fa8656e308026eeabce8f0bc18048433252318ab80ac79da0b3d3d8697dfba89190610b15908690614e73565b60405180910390a350610b26611868565b610b2e61187c565b5050565b610b3a613b9d565b610b426116bb565b15610c0057835160005b818114610865578251600090610b6990879063ffffffff61188b16565b90506000610ba6888481518110610b7c57fe5b602002602001015160a00151898581518110610b9457fe5b60200260200101516080015184611e2a565b9050610bb0613b9d565b610bd4898581518110610bbf57fe5b60200260200101518389878151811061082e57fe5b9050610be0868261199b565b955087866000015110610bf557505050610865565b505050600101610b4c565b610c086117c7565b835160005b8181146108dc578251600090610c2a90879063ffffffff61188b16565b90506000610c3d888481518110610b7c57fe5b9050610c47613b9d565b610c56898581518110610bbf57fe5b9050610c62868261199b565b955087866000015110610c77575050506108dc565b505050600101610c0d565b600860209081526000928352604080842090915290825290205460ff1681565b600080610cb0858585611e6c565b90506005816008811115610cc057fe5b1480610cd757506007816008811115610cd557fe5b145b15610cec57610cec6109a76005878787611ede565b610cf881868686611f3b565b95945050505050565b600760209081526000928352604080842090915290825290205460ff1681565b6004546001600160a01b031681565b610d38613bf4565b610d406117f1565b610a62858585856000612173565b610d56613b9d565b610d61848484610b32565b905082816000015110156108e6576108e66109a76000858460000151612260565b600080610d9a6001548561227f90919063ffffffff16565b9050610a74848285612293565b6000546001600160a01b031681565b6060610dc06116bb565b15610e63578351604080518281526020808402820101909152818015610e0057816020015b610ded613b9d565b815260200190600190039081610de55790505b50915060005b81811461086557610e44868281518110610e1c57fe5b6020026020010151868381518110610e3057fe5b602002602001015186848151811061082e57fe5b838281518110610e5057fe5b6020908102919091010152600101610e06565b610e6b6117c7565b8351604080518281526020808402820101909152818015610ea657816020015b610e93613b9d565b815260200190600190039081610e8b5790505b50915060005b8181146108dc57610ec2868281518110610e1c57fe5b838281518110610ece57fe5b6020908102919091010152600101610eac565b610ee9611625565b7f3a3e76d7a75e198aef1f53137e4f2a8a2ec74e2e9526db8404d08ccc9f1e621d60035482604051610f1c929190614eca565b60405180910390a1600355565b6060610f336117f1565b8351604080518281526020808402820101909152818015610f6e57816020015b610f5b613b9d565b815260200190600190039081610f535790505b50915060005b818114610fde57610fbf868281518110610f8a57fe5b6020026020010151868381518110610f9e57fe5b6020026020010151868481518110610fb257fe5b6020026020010151612319565b838281518110610fcb57fe5b6020908102919091010152600101610f74565b5050610fe8611868565b6108e661187c565b610ff8613b9d565b6110006117f1565b61100b848484612319565b9050610fe8611868565b61101d613c28565b611026826123bb565b604083015260208201526080820151611052578060015b9081600681111561104a57fe5b905250610a3f565b60a08201516110635780600261103d565b8160a0015181604001511061107a5780600561103d565b816101000151421061108e5780600461103d565b6020808201516000908152600a909152604090205460ff16156110b35780600661103d565b61012082015182516001600160a01b039081166000908152600b6020908152604080832060608801519094168352929052205411156110f45780600661103d565b60038152919050565b600080611115600154856123ec90919063ffffffff16565b9050610a748482856123fb565b61112a613b9d565b6111358484846107c6565b905082816020015110156108e6576108e66109a76001858460200151612260565b835160005b8181146111c6576111be8160001b87838151811061117557fe5b602002602001015187848151811061118957fe5b602002602001015187858151811061119d57fe5b60200260200101518786815181106111b157fe5b6020026020010151612450565b60010161115b565b5060405162461bcd60e51b81526004016111df90615231565b60405180910390fd5b6111f0613bf4565b6111f86117f1565b610a62858585856001612173565b60606112106117f1565b835160408051828152602080840282010190915281801561124b57816020015b611238613b9d565b8152602001906001900390816112305790505b50915060005b818114610fde5761129c86828151811061126757fe5b602002602001015186838151811061127b57fe5b602002602001015186848151811061128f57fe5b602002602001015161259f565b8382815181106112a857fe5b6020908102919091010152600101611251565b6112c3611625565b6107c381611652565b60015481565b6112da611625565b6000816001600160a01b031663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561131557600080fd5b505afa158015611329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061134d9190810190614639565b6001600160e01b031981166000908152600260205260409020549091506001600160a01b03168015611386576113866109a783836125d2565b6001600160e01b031982166000908152600260205260409081902080546001600160a01b0319166001600160a01b038616179055517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c03194906113ea9084908690614ff9565b60405180910390a1505050565b600b60209081526000928352604080842090915290825290205481565b6320c13b0b60e01b81565b6114276117f1565b805160005b8181146114575761144f83828151811061144257fe5b6020026020010151611823565b60010161142c565b50506107bb611868565b611469613b9d565b6114716117f1565b61100b84848461259f565b6006546001600160a01b031681565b611493611625565b6001600160a01b0381166114b1576114ac6109a7612629565b6107c3565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60606115066116bb565b156115a357825160408051828152602080840282010190915281801561154057816020015b606081526020019060019003908161152b5790505b50915060005b81811461159c5761157d85828151811061155c57fe5b602002602001015185838151811061157057fe5b60200260200101516116cb565b83828151811061158957fe5b6020908102919091010152600101611546565b5050610775565b6115ab6117c7565b82516040805182815260208084028201019091528180156115e057816020015b60608152602001906001900390816115cb5790505b50915060005b81811461161b576115fc85828151811061155c57fe5b83828151811061160857fe5b60209081029190910101526001016115e6565b50506107756117dc565b6000546001600160a01b0316331461073157600054610731906109a79033906001600160a01b0316612647565b6004546040517fe1a5430ebec577336427f40f15822f1f36c5e3509ff209d6db9e6c9e6941cb0b91611691916001600160a01b03909116908490614dc6565b60405180910390a1600480546001600160a01b0319166001600160a01b0392909216919091179055565b600054600160a81b900460ff1690565b606060006116e46001548561227f90919063ffffffff16565b90506116f1848483612664565b6060840151611700818061271e565b600082815260056020526040808220805460ff191660011790556080870151905160609130916117309190614d8c565b600060405180830381855af49150503d806000811461176b576040519150601f19603f3d011682016040523d82523d6000602084013e611770565b606091505b509150915081611787576117876109a7858361274f565b61179283600061271e565b60405184907fa4a7329f1dd821363067e07d359e347b4af9b1efe4b6cccf13240228af3c800d90600090a29695505050505050565b6000805460ff60a81b1916600160a81b179055565b6000805460ff60a81b1916905561073161276c565b600054600160a01b900460ff161561180e5761180e6109a76127a0565b6000805460ff60a01b1916600160a01b179055565b61182b613c28565b61183482611015565b905061184082826127be565b60038151600681111561184f57fe5b1461185a57506107c3565b610b2e828260200151612839565b6118706116bb565b6107315761073161276c565b6000805460ff60a01b19169055565b6000828211156118a4576118a46109a7600285856128b7565b50900390565b6118b2613b9d565b604051606090634da26aab60e11b906118d39087908790879060240161529d565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060306001600160a01b0316836040516119249190614d8c565b600060405180830381855af49150503d806000811461195f576040519150601f19603f3d011682016040523d82523d6000602084013e611964565b606091505b5091509150811561199157805160a01461197a57fe5b8080602001905161198e9190810190614657565b93505b5050509392505050565b6119a3613b9d565b815183516119b69163ffffffff6128d616565b8152602080830151908401516119d19163ffffffff6128d616565b6020820152604080830151908401516119ef9163ffffffff6128d616565b604082015260608083015190840151611a0d9163ffffffff6128d616565b606082015260808083015190840151611a2b9163ffffffff6128d616565b608082015292915050565b6006546000906001600160a01b0316818115611a525781611a54565b335b9250505090565b6060634ad3127560e01b848484604051602401611a7a93929190614de1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290509392505050565b805160208201fd5b611ac5613bcc565b8551611ad857611ad86109a760006128f2565b8451611aeb57611aeb6109a760016128f2565b8351865114611b0157611b016109a760026128f2565b8251855114611b1757611b176109a760036128f2565b8551604051908082528060200260200182016040528015611b5257816020015b611b3f613b9d565b815260200190600190039081611b375790505b5081528451604080518281526020808402820101909152908015611b9057816020015b611b7d613b9d565b815260200190600190039081611b755790505b506020820152600080611ba1613c4a565b88600081518110611bae57fe5b60200260200101519050611bc0613c4a565b88600081518110611bcd57fe5b602002602001015190506000611be2836123bb565b9150506000611bf0836123bb565b915050611bfb613b9d565b611c03613b9d565b611c0b613bf4565b611c3e87878f8c81518110611c1c57fe5b60200260200101518f8c81518110611c3057fe5b60200260200101518f612173565b805160200151909150611c5890869063ffffffff6128d616565b9450611c75816020015160200151856128d690919063ffffffff16565b9350611c8583826000015161199b565b9250611c9582826020015161199b565b9150611cb281604001518b604001516128d690919063ffffffff16565b60408b0152606080820151908b0151611cd09163ffffffff6128d616565b60608b015260a08701518510611d7b578951805160018b019a8592918110611cf457fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525092508e51891415611d5857818a602001518981518110611d4757fe5b602002602001018190525050611e19565b8e8981518110611d6457fe5b60200260200101519650611d77876123bb565b9550505b8560a001518410611e1357818a6020015189806001019a5081518110611d9d57fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525091508d51881415611df057828a600001518a81518110611d4757fe5b8d8881518110611dfc57fe5b60200260200101519550611e0f866123bb565b9450505b50611c03565b505050505050505095945050505050565b6000610a7483611e60611e4482600163ffffffff61188b16565b611e54888763ffffffff61294616565b9063ffffffff6128d616565b9063ffffffff61297716565b6000611e798484846129a1565b90506001600160a01b038316611e9957611e996109a76006868686611ede565b60088181811115611ea657fe5b60ff1610611ebe57611ebe6109a76003868686611ede565b6000816008811115611ecc57fe5b14156108e6576108e66109a760048686865b6060637e5a231860e01b85858585604051602401611eff94939291906151e9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050949350505050565b60006001856008811115611f4b57fe5b1415611f72578151600114611f6a57611f6a6109a76002868686611ede565b506000610a74565b6002856008811115611f8057fe5b141561204e578151604214611f9f57611f9f6109a76002868686611ede565b600082600081518110611fae57fe5b016020015160f81c90506000611fcb84600163ffffffff6129e016565b90506000611fe085602163ffffffff6129e016565b90506000600188858585604051600081526020016040526040516120079493929190614fb6565b6020604051602081039080840390855afa158015612029573d6000803e3d6000fd5b5050604051601f1901516001600160a01b038981169116149550610a74945050505050565b600385600881111561205c57fe5b141561210957815160421461207b5761207b6109a76002868686611ede565b60008260008151811061208a57fe5b016020015160f81c905060006120a784600163ffffffff6129e016565b905060006120bc85602163ffffffff6129e016565b905060006001886040516020016120d39190614d98565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516120079493929190614fb6565b600485600881111561211757fe5b141561212f57612128848484612a0a565b9050610a74565b600685600881111561213d57fe5b1461214457fe5b5060008381526007602090815260408083206001600160a01b038616845290915290205460ff16949350505050565b61217b613bf4565b61016080870151610140808801919091528701519086015261219b613c28565b6121a487611015565b90506121ae613c28565b6121b787611015565b905060006121c3611a36565b90506121d18984838a612b43565b6121dd88838389612b43565b6121f1898985602001518560200151612c1a565b61220a8989856040015185604001516003543a8b612c5f565b93506122258982856020015186604001518860000151612db4565b61223e8882846020015185604001518860200151612db4565b612254836020015183602001518b8b8589612e78565b50505095945050505050565b60606318e4b14160e01b848484604051602401611a7a939291906151cd565b60006108e68261228e85613005565b613080565b6060830151600090816122a7858386611e6c565b905060058160088111156122b757fe5b14156122d9576122d26122ca878761309f565b8684876130be565b9250612310565b60078160088111156122e757fe5b1415612301576122d26122fa878761309f565b8386613147565b61230d81868487611f3b565b92505b50509392505050565b612321613b9d565b612329613c28565b61233285611015565b9050600061233e611a36565b905061234c86838387612b43565b600061236983604001518860a0015161188b90919063ffffffff16565b905060006123778783613156565b905061238788826003543a61316c565b94506000846020015190506123a389858388604001518a612db4565b6123af818a86896131e3565b50505050509392505050565b6000806123d3600154846123ec90919063ffffffff16565b6000818152600960205260409020549092509050915091565b60006108e68261228e8561327a565b82516000908161240c858386611e6c565b9050600581600881111561241c57fe5b141561242f576122d26122ca8787613333565b600781600881111561243d57fe5b1415612301576122d26122fa8787613333565b801561259857602084518161246157fe5b06600414612478576124786109a760008787613352565b600061248a858263ffffffff61337116565b6001600160e01b031981166000908152600260205260409020549091506001600160a01b0316806124c4576124c46109a760018989613352565b604051606090632a17967960e21b906124e7908990899089908990602401615018565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b0316836040516125389190614d8c565b6000604051808303816000865af19150503d8060008114612575576040519150601f19603f3d011682016040523d82523d6000602084013e61257a565b606091505b509150915081612592576125926109a78b8b846133a5565b50505050505b5050505050565b6125a7613b9d565b6125b2848484612319565b9050828160200151146108e6576108e66109a76002858460200151612260565b60606311c7b72060e01b83836040516024016125ef929190614ff9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905092915050565b604080518082019091526004815263734f6e1f60e11b602082015290565b6060631de45ad160e01b83836040516024016125ef929190614dc6565b8260200151421061267d5761267d6109a76001836133c4565b60408301513a8114612697576126976109a7833a846133e1565b6006546001600160a01b031680156126b6576126b66109a78483613400565b60008381526005602052604090205460ff16156126db576126db6109a76000856133c4565b60608501516001600160a01b038116331480159061270157506126ff868587612293565b155b15612716576127166109a76001868489611ede565b505050505050565b6001600160a01b0382163314610b2e57600680546001600160a01b0383166001600160a01b03199091161790555050565b60606320d11f6160e01b83836040516024016125ef929190614ee5565b4780156107c357604051339082156108fc029083906000818181858888f19350505050158015610b2e573d6000803e3d6000fd5b6040805180820190915260048152630c3b823f60e01b602082015290565b60608201516001600160a01b0316156127f85760608201516001600160a01b031633146127f8576127f86109a7600283602001513361341d565b6000612802611a36565b9050806001600160a01b031683600001516001600160a01b031614612834576128346109a7600084602001518461341d565b505050565b6000818152600a602052604090819020805460ff19166001179055828101518351610140850151610160860151935185946001600160a01b039485169493909316927f02c310a9a43963ff31a754a4099cc435ed498049687539d72d7818d9b093415c926128ab92909190339061506a565b60405180910390a45050565b606063e946c1bb60e01b848484604051602401611a7a93929190615197565b6000828201838110156108e6576108e66109a7600086866128b7565b606063d4092f4f60e01b8260405160240161290d9190615189565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050919050565b60008261295557506000610775565b8282028284828161296257fe5b04146108e6576108e66109a7600186866128b7565b60008161298d5761298d6109a7600385856128b7565b600082848161299857fe5b04949350505050565b60008151600014156129bd576129bd6109a76002868686611ede565b816001835103815181106129cd57fe5b016020015160f81c6008811115610a7457fe5b60008160200183511015612a0157612a016109a7600585518560200161343c565b50016020015190565b8051600090612a2383600019830163ffffffff61345b16565b604051606090630b135d3f60e11b90612a429088908790602401614ee5565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050612a86848363ffffffff61345b16565b60006060866001600160a01b031683604051612aa29190614d8c565b600060405180830381855afa9150503d8060008114612add576040519150601f19603f3d011682016040523d82523d6000602084013e612ae2565b606091505b5091509150818015612af5575080516020145b15612b295763b067138160e01b612b1382600063ffffffff61337116565b6001600160e01b031916149450505050506108e6565b612b386109a78989898561345f565b505050509392505050565b600383516006811115612b5257fe5b14612b6c57612b6c6109a784602001518560000151613480565b60608401516001600160a01b031615612ba65760608401516001600160a01b03163314612ba657612ba66109a7600285602001513361341d565b60208401516001600160a01b031615612be957816001600160a01b031684602001516001600160a01b031614612be957612be96109a7600185602001518561341d565b612bf8848460200151836123fb565b612c1457612c146109a760008560200151876000015185611ede565b50505050565b60a08084015190850151612c339163ffffffff61294616565b60808085015190860151612c4c9163ffffffff61294616565b1015612c1457612c146109a7838361349d565b612c67613bf4565b60a0880151600090612c7f908863ffffffff61188b16565b90506000612c968a608001518b60a00151846134ba565b90506000612cb1888b60a0015161188b90919063ffffffff16565b90506000612cc88b608001518c60a00151846134ba565b90508515612ce557612cde8c8c858785876134ee565b9450612cf6565b612cf38c8c858785876135c0565b94505b84515160808d015160c08e0151612d0e9291906134ba565b85516040015284516020015160a08d015160e08e0151612d2f9291906134ba565b85516060015260208501515160808c015160c08d0151612d509291906134ba565b85602001516040018181525050612d788560200151602001518c60a001518d60e001516134ba565b6020860151606001526000612d93888a63ffffffff61294616565b86516080908101829052602088015101525050505050979650505050505050565b6020810151612dca90839063ffffffff6128d616565b60096000858152602001908152602001600020819055508285604001516001600160a01b031686600001516001600160a01b03167f6869791f0a34781b29882982cc39e882768cf2c96995c2a110c577c53bc932d58861014001518961016001518a61018001518b6101a001518b338a600001518b602001518c604001518d606001518e60800151604051612e699b9a9998979695949392919061509e565b60405180910390a45050505050565b8351835160408087015190860151610140870151855160200151612ea1918b9186908890612450565b612ebb8a8961014001518686896020015160200151612450565b612ed5898861018001518584896020015160400151612450565b612eef8a8961018001518685896000015160400151612450565b612f058a89610140015186898960400151612450565b612f1b8988610140015185898960600151612450565b6000612f338b8b88600001516080015188888c613659565b905080612f50578551600060809182018190526020880151909101525b816001600160a01b0316836001600160a01b0316148015612f8657506101a080890151908a0151612f869163ffffffff6136a816565b15612fc457612fbf8b8a6101a001518986612fba8b60200151606001518c60000151606001516128d690919063ffffffff16565b612450565b612ff8565b612fde8a896101a0015189858a6020015160600151612450565b612ff88b8a6101a0015189868a6000015160600151612450565b5050505050505050505050565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b60405161190160f01b8152600281019290925260228201526042902090565b6040516060906337811f6d60e21b906125ef90859085906024016152bd565b805160009060158110156130dc576130dc6109a76002878787611ede565b60006130f284601419840163ffffffff6136cd16565b6001600160a01b0380871660009081526008602090815260408083209385168352929052205490915060ff1661312f5761312f6109a78683613700565b61313c818886601561371d565b979650505050505050565b6000610a74838584600161371d565b600081831061316557816108e6565b5090919050565b613174613b9d565b6020810184905260a085015160808601516131909186916134ba565b815260a085015160c08601516131a79186916134ba565b604082015260a085015160e08601516131c19186916134ba565b60608201526131d6828463ffffffff61294616565b6080820152949350505050565b6131fd848461016001518486600001518560200151612450565b613217848461014001518560000151858560000151612450565b61323184846101a001518486604001518560600151612450565b61324f84846101800151856000015186604001518560400151612450565b6000613265858360800151866000015186613855565b90508061259857600060808301525050505050565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a7534939092909160208710156132c657fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b6040516060906307dfca1960e31b906125ef908590859060240161527d565b606063488219a660e01b848484604051602401611a7a9392919061515c565b60008160040183511015613392576133926109a7600385518560040161343c565b5001602001516001600160e01b03191690565b6060634678472b60e01b848484604051602401611a7a93929190614f05565b606063f598518460e01b83836040516024016125ef929190615223565b606063a26dac0960e01b848484604051602401611a7a93929190614f9b565b606063dec4aedf60e01b83836040516024016125ef929190614e8f565b606063e53c76c860e01b848484604051602401611a7a939291906151a5565b6060632800659560e01b848484604051602401611a7a939291906151db565b9052565b6060631b8388f760e01b85858585604051602401611eff9493929190614e9d565b606063fdb6ca8d60e01b83836040516024016125ef929190614f39565b606063b6555d6f60e01b83836040516024016125ef929190614eca565b60006134c784848461388d565b156134da576134da6109a78585856138f3565b610a7483611e60868563ffffffff61294616565b6134f6613bf4565b818511848411848611156135165761350f898686613912565b9250613565565b868411156135565782518790528251602001869052608088015160a08901516135409190896134ba565b6020808501805192909252905101879052613565565b6135628787878761394f565b92505b811561358b5760208084015101518351516135859163ffffffff61188b16565b60408401525b80156135b357825160209081015190840151516135ad9163ffffffff61188b16565b60608401525b50505b9695505050505050565b6135c8613bf4565b828411156135e2576135db878484613912565b9050613630565b828410156136215780518590528051602090810185905281015184905260a0860151608087015161361491908661397a565b6020808301510152613630565b61362d8585858561394f565b90505b602080820151015181515161364a9163ffffffff61188b16565b60408201529695505050505050565b6004546000906001600160a01b0316801561369e5747600061367f8a84848b8b8a6139b2565b905061369189848385038b8a8a6139b2565b50600193505050506135b6565b60009150506135b6565b6000815183511480156108e65750508051602091820120825192909101919091201490565b600081601401835110156136ee576136ee6109a7600485518560140161343c565b5001601401516001600160a01b031690565b606063a15c0d0660e01b83836040516024016125ef929190614dc6565b81516000906137348484830363ffffffff61345b16565b6040516060906320c13b0b60e01b906137539088908890602401615045565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050613797858363ffffffff61345b16565b60006060886001600160a01b0316836040516137b39190614d8c565b600060405180830381855afa9150503d80600081146137ee576040519150601f19603f3d011682016040523d82523d6000602084013e6137f3565b606091505b5091509150818015613806575080516020145b1561383a576320c13b0b60e01b61382482600063ffffffff61337116565b6001600160e01b03191614945050505050610a74565b6138496109a78a8a8a85613a9a565b50505050949350505050565b6004546000906001600160a01b03168015613883576138788682478888886139b2565b506001915050610a74565b6000915050610a74565b60008261389f5761389f6109a7613abb565b8115806138aa575083155b156138b7575060006108e6565b600083806138c157fe5b85840990506138d6858463ffffffff61294616565b6138e8826103e863ffffffff61294616565b101595945050505050565b606063339f3de260e01b848484604051602401611a7a93929190614f9b565b61391a613bf4565b60208082018051859052518101839052815101839052608084015160a08501516139459190856134ba565b8151529392505050565b613957613bf4565b805194909452835160209081019390935282840180519290925290519091015290565b6000613987848484613ad9565b1561399a5761399a6109a78585856138f3565b610a7483611e60611e4482600163ffffffff61188b16565b60008385106139be5750825b60405160609063a3b4a32760e01b906139df90869086908990602401614de1565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060886001600160a01b03168484604051613a319190614d8c565b60006040518083038185875af1925050503d8060008114613a6e576040519150601f19603f3d011682016040523d82523d6000602084013e613a73565b606091505b509150915081613a8d57613a8d6109a78b89898986613b3d565b5050509695505050505050565b6060635bd0428d60e01b85858585604051602401611eff9493929190614e09565b60408051808201909152600481526329e460df60e21b602082015290565b600082613aeb57613aeb6109a7613abb565b811580613af6575083155b15613b03575060006108e6565b60008380613b0d57fe5b858409905083613b23818363ffffffff61188b16565b81613b2a57fe5b0690506138d6858463ffffffff61294616565b60606387cb1e7560e01b8686868686604051602401613b60959493929190614f54565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905095945050505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280606081526020016060815260200160008152602001600081525090565b6040518060800160405280613c07613b9d565b8152602001613c14613b9d565b815260200160008152602001600081525090565b6040805160608101909152806000815260006020820181905260409091015290565b604051806101c0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b803561077581615473565b600082601f830112613cf957600080fd5b8135613d0c613d07826152f4565b6152ce565b91508181835260208401935060208101905083856020840282011115613d3157600080fd5b60005b83811015613d5d5781613d478882613cdd565b8452506020928301929190910190600101613d34565b5050505092915050565b600082601f830112613d7857600080fd5b8135613d86613d07826152f4565b81815260209384019390925082018360005b83811015613d5d5781358601613dae8882613f1a565b8452506020928301929190910190600101613d98565b600082601f830112613dd557600080fd5b8135613de3613d07826152f4565b81815260209384019390925082018360005b83811015613d5d5781358601613e0b8882613fec565b8452506020928301929190910190600101613df5565b600082601f830112613e3257600080fd5b8135613e40613d07826152f4565b81815260209384019390925082018360005b83811015613d5d5781358601613e68888261418d565b8452506020928301929190910190600101613e52565b600082601f830112613e8f57600080fd5b8135613e9d613d07826152f4565b91508181835260208401935060208101905083856020840282011115613ec257600080fd5b60005b83811015613d5d5781613ed88882613ef9565b8452506020928301929190910190600101613ec5565b803561077581615487565b803561077581615490565b803561077581615499565b805161077581615499565b600082601f830112613f2b57600080fd5b8135613f39613d0782615314565b91508082526020830160208301858383011115613f5557600080fd5b613f608382846153ff565b50505092915050565b600060a08284031215613f7b57600080fd5b613f8560a06152ce565b90506000613f93848461421b565b8252506020613fa48484830161421b565b6020830152506040613fb88482850161421b565b6040830152506060613fcc8482850161421b565b6060830152506080613fe08482850161421b565b60808301525092915050565b60006101c08284031215613fff57600080fd5b61400a6101c06152ce565b905060006140188484613cdd565b825250602061402984848301613cdd565b602083015250604061403d84828501613cdd565b604083015250606061405184828501613cdd565b606083015250608061406584828501613ef9565b60808301525060a061407984828501613ef9565b60a08301525060c061408d84828501613ef9565b60c08301525060e06140a184828501613ef9565b60e0830152506101006140b684828501613ef9565b610100830152506101206140cc84828501613ef9565b610120830152506101408201356001600160401b038111156140ed57600080fd5b6140f984828501613f1a565b610140830152506101608201356001600160401b0381111561411a57600080fd5b61412684828501613f1a565b610160830152506101808201356001600160401b0381111561414757600080fd5b61415384828501613f1a565b610180830152506101a08201356001600160401b0381111561417457600080fd5b61418084828501613f1a565b6101a08301525092915050565b600060a0828403121561419f57600080fd5b6141a960a06152ce565b905060006141b78484613ef9565b82525060206141c884848301613ef9565b60208301525060406141dc84828501613ef9565b60408301525060606141f084828501613cdd565b60608301525060808201356001600160401b0381111561420f57600080fd5b613fe084828501613f1a565b805161077581615490565b60006020828403121561423857600080fd5b6000610a748484613cdd565b6000806040838503121561425757600080fd5b60006142638585613cdd565b925050602061427485828601613cdd565b9150509250929050565b6000806040838503121561429157600080fd5b600061429d8585613cdd565b925050602061427485828601613eee565b600080600080608085870312156142c457600080fd5b84356001600160401b038111156142da57600080fd5b6142e687828801613d67565b94505060208501356001600160401b0381111561430257600080fd5b61430e87828801613ce8565b93505060408501356001600160401b0381111561432a57600080fd5b61433687828801613ce8565b92505060608501356001600160401b0381111561435257600080fd5b61435e87828801613e7e565b91505092959194509250565b60006020828403121561437c57600080fd5b81356001600160401b0381111561439257600080fd5b610a7484828501613dc4565b600080600080608085870312156143b457600080fd5b84356001600160401b038111156143ca57600080fd5b6143d687828801613dc4565b94505060208501356001600160401b038111156143f257600080fd5b6143fe87828801613dc4565b93505060408501356001600160401b0381111561441a57600080fd5b61442687828801613d67565b92505060608501356001600160401b0381111561444257600080fd5b61435e87828801613d67565b60008060006060848603121561446357600080fd5b83356001600160401b0381111561447957600080fd5b61448586828701613dc4565b93505060208401356001600160401b038111156144a157600080fd5b6144ad86828701613e7e565b92505060408401356001600160401b038111156144c957600080fd5b6144d586828701613d67565b9150509250925092565b6000806000606084860312156144f457600080fd5b83356001600160401b0381111561450a57600080fd5b61451686828701613dc4565b93505060206144ad86828701613ef9565b6000806040838503121561453a57600080fd5b82356001600160401b0381111561455057600080fd5b61455c85828601613e21565b92505060208301356001600160401b0381111561457857600080fd5b61427485828601613d67565b60006020828403121561459657600080fd5b6000610a748484613ef9565b600080604083850312156145b557600080fd5b60006142638585613ef9565b6000806000606084860312156145d657600080fd5b60006145e28686613ef9565b93505060206145f386828701613cdd565b92505060408401356001600160401b0381111561460f57600080fd5b6144d586828701613f1a565b60006020828403121561462d57600080fd5b6000610a748484613f04565b60006020828403121561464b57600080fd5b6000610a748484613f0f565b600060a0828403121561466957600080fd5b6000610a748484613f69565b60006020828403121561468757600080fd5b81356001600160401b0381111561469d57600080fd5b610a7484828501613fec565b600080604083850312156146bc57600080fd5b82356001600160401b038111156146d257600080fd5b6146de85828601613fec565b92505060208301356001600160401b038111156146fa57600080fd5b61427485828601613f1a565b6000806000806080858703121561471c57600080fd5b84356001600160401b0381111561473257600080fd5b61473e87828801613fec565b94505060208501356001600160401b0381111561475a57600080fd5b61476687828801613fec565b93505060408501356001600160401b0381111561478257600080fd5b61478e87828801613f1a565b92505060608501356001600160401b038111156147aa57600080fd5b61435e87828801613f1a565b6000806000606084860312156147cb57600080fd5b83356001600160401b038111156147e157600080fd5b6147ed86828701613fec565b93505060206145f386828701613ef9565b6000806040838503121561481157600080fd5b82356001600160401b0381111561482757600080fd5b6146de8582860161418d565b60006108e683836149ac565b600061484b8383614b0b565b505060a00190565b61485c816153b2565b82525050565b61485c8161534e565b600061487682615341565b6148808185615345565b9350836020820285016148928561533b565b8060005b858110156148cc57848403895281516148af8582614833565b94506148ba8361533b565b60209a909a0199925050600101614896565b5091979650505050505050565b60006148e482615341565b6148ee8185615345565b93506148f98361533b565b8060005b83811015614927578151614911888261483f565b975061491c8361533b565b9250506001016148fd565b509495945050505050565b600061493d82615341565b6149478185615345565b93506149528361533b565b8060005b8381101561492757815161496a888261483f565b97506149758361533b565b925050600101614956565b61485c81615359565b61485c8161535e565b61485c61499e8261535e565b61535e565b61485c81615361565b60006149b782615341565b6149c18185615345565b93506149d181856020860161540b565b6149da81615437565b9093019392505050565b60006149ef82615341565b6149f98185610a3f565b9350614a0981856020860161540b565b9290920192915050565b61485c816153bd565b61485c816153c8565b61485c816153d3565b61485c816153de565b61485c816153e9565b6000614a4d601c83610a3f565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b6000614a86601483615345565b731514905394d1915494d7d4d550d0d154d4d1955360621b815260200192915050565b8051608080845260009190840190614ac18282614932565b91505060208301518482036020860152614adb8282614932565b9150506040830151614af06040860182614989565b506060830151614b036060860182614989565b509392505050565b805160a0830190614b1c8482614989565b506020820151614b2f6020850182614989565b506040820151614b426040850182614989565b506060820151614b556060850182614989565b506080820151612c146080850182614989565b8051610180830190614b7a8482614b0b565b506020820151614b8d60a0850182614b0b565b506040820151614ba1610140850182614989565b506060820151612c14610160850182614989565b80516060830190614bc68482614a37565b506020820151614bd96020850182614989565b506040820151612c146040850182614989565b80516000906101c0840190614c018582614862565b506020830151614c146020860182614862565b506040830151614c276040860182614862565b506060830151614c3a6060860182614862565b506080830151614c4d6080860182614989565b5060a0830151614c6060a0860182614989565b5060c0830151614c7360c0860182614989565b5060e0830151614c8660e0860182614989565b50610100830151614c9b610100860182614989565b50610120830151614cb0610120860182614989565b50610140830151848203610140860152614cca82826149ac565b915050610160830151848203610160860152614ce682826149ac565b915050610180830151848203610180860152614d0282826149ac565b9150506101a08301518482036101a0860152610cf882826149ac565b805160009060a0840190614d328582614989565b506020830151614d456020860182614989565b506040830151614d586040860182614989565b506060830151614d6b6060860182614862565b5060808301518482036080860152610cf882826149ac565b61485c816153ac565b60006108e682846149e4565b6000614da382614a40565b9150614daf8284614992565b50602001919050565b602081016107758284614862565b60408101614dd48285614862565b6108e66020830184614862565b60608101614def8286614862565b614dfc6020830185614862565b610a746040830184614989565b60808101614e178287614862565b8181036020830152614e2981866149ac565b90508181036040830152614e3d81856149ac565b905081810360608301526135b681846149ac565b602080825281016108e6818461486b565b602080825281016108e681846148d9565b602081016107758284614980565b602081016107758284614989565b60408101614dd48285614989565b60808101614eab8287614989565b614eb86020830186614862565b8181036040830152614e3d81856149ac565b60408101614ed88285614989565b6108e66020830184614989565b60408101614ef38285614989565b8181036020830152610a7481846149ac565b60608101614f138286614989565b8181036020830152614f2581856149ac565b90508181036040830152610cf881846149ac565b60408101614f478285614989565b6108e66020830184614a37565b60a08101614f628288614989565b614f6f6020830187614989565b614f7c6040830186614862565b614f896060830185614862565b818103608083015261313c81846149ac565b60608101614fa98286614989565b614dfc6020830185614989565b60808101614fc48287614989565b614fd16020830186614d83565b614fde6040830185614989565b610cf86060830184614989565b6020810161077582846149a3565b60408101614dd482856149a3565b602080825281016108e681846149ac565b6080808252810161502981876149ac565b90506150386020830186614862565b614fde6040830185614862565b6040808252810161505681856149ac565b90508181036020830152610a7481846149ac565b6060808252810161507b81866149ac565b9050818103602083015261508f81856149ac565b9050610a746040830184614853565b61016080825281016150b0818e6149ac565b905081810360208301526150c4818d6149ac565b905081810360408301526150d8818c6149ac565b905081810360608301526150ec818b6149ac565b90506150fb608083018a614862565b61510860a0830189614853565b61511560c0830188614989565b61512260e0830187614989565b615130610100830186614989565b61513e610120830185614989565b61514c610140830184614989565b9c9b505050505050505050505050565b6060810161516a8286614a13565b6151776020830185614989565b8181036040830152610cf881846149ac565b602081016107758284614a1c565b60608101614fa98286614a1c565b606081016151b38286614a25565b6151c06020830185614989565b610a746040830184614862565b60608101614fa98286614a25565b60608101614fa98286614a2e565b608081016151f78287614a37565b6152046020830186614989565b6152116040830185614862565b81810360608301526135b681846149ac565b60408101614ed88285614a13565b6020808252810161077581614a79565b602080825281016108e68184614aa9565b60a081016107758284614b0b565b61018081016107758284614b68565b606081016107758284614bb5565b6040808252810161528e8185614bec565b90506108e66020830184614989565b606080825281016152ae8186614bec565b90506151776020830185614989565b6040808252810161528e8185614d1e565b6040518181016001600160401b03811182821017156152ec57600080fd5b604052919050565b60006001600160401b0382111561530a57600080fd5b5060209081020190565b60006001600160401b0382111561532a57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610775826153a0565b151590565b90565b6001600160e01b03191690565b80610a3f81615441565b80610a3f8161544b565b80610a3f81615455565b80610a3f8161545f565b80610a3f81615469565b6001600160a01b031690565b60ff1690565b6000610775826153f4565b60006107758261536e565b600061077582615378565b600061077582615382565b60006107758261538c565b600061077582615396565b60006107758261534e565b82818337506000910152565b60005b8381101561542657818101518382015260200161540e565b83811115612c145750506000910152565b601f01601f191690565b600281106107c357fe5b600481106107c357fe5b600381106107c357fe5b600881106107c357fe5b600781106107c357fe5b61547c8161534e565b81146107c357600080fd5b61547c81615359565b61547c8161535e565b61547c81615361565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a7231582087e05071fafb91608a204fca02a84264fc88be64e36928c84047b7dd41f10f146c6578706572696d656e74616cf564736f6c63430005100040", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x56BC CODESIZE SUB DUP1 PUSH3 0x56BC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x41 SWAP2 PUSH3 0x12A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR DUP2 SSTORE DUP2 SWAP1 DUP1 ADDRESS SWAP1 POP PUSH3 0xB2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH11 0xC1E08141C9BDD1BD8DBDB PUSH1 0xAA SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x332E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP6 DUP5 PUSH3 0xC0 PUSH1 0x20 SHL PUSH3 0x54A2 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 SSTORE POP PUSH3 0x170 SWAP3 POP POP POP JUMP JUMPDEST DUP4 MLOAD PUSH1 0x20 SWAP5 DUP6 ADD KECCAK256 DUP4 MLOAD SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 MSTORE SWAP6 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x124 DUP2 PUSH3 0x156 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x14B DUP5 DUP5 PUSH3 0x117 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0x161 DUP2 PUSH3 0x153 JUMP JUMPDEST DUP2 EQ PUSH3 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x553C DUP1 PUSH3 0x180 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D45CD23 GT PUSH2 0x144 JUMPI DUP1 PUSH4 0xBEEE2E14 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xDD885E2D GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xDD885E2D EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xDEDFC1F1 EQ PUSH2 0x68F JUMPI DUP1 PUSH4 0xE14B58C4 EQ PUSH2 0x6A2 JUMPI DUP1 PUSH4 0xEEA086BA EQ PUSH2 0x6B5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6CA JUMPI DUP1 PUSH4 0xFC74896D EQ PUSH2 0x6EA JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xBEEE2E14 EQ PUSH2 0x5E5 JUMPI DUP1 PUSH4 0xC0FA16CC EQ PUSH2 0x5F8 JUMPI DUP1 PUSH4 0xC26CFECD EQ PUSH2 0x618 JUMPI DUP1 PUSH4 0xC585BB93 EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0xD9BFA73E EQ PUSH2 0x64D JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x9B44D556 GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x9B44D556 EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0x9D3FA4B9 EQ PUSH2 0x552 JUMPI DUP1 PUSH4 0xA12DCC6F EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0xA6C3BF33 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xB04FBDDD EQ PUSH2 0x5B2 JUMPI DUP1 PUSH4 0xB718E292 EQ PUSH2 0x5D2 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x8D45CD23 EQ PUSH2 0x4B7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0x8EA8DFE4 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x9331C742 EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0x9694A402 EQ PUSH2 0x52C JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x60704108 GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x7B8E3514 GT PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x7B8E3514 EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0x8171C407 EQ PUSH2 0x42F JUMPI DUP1 PUSH4 0x82C174D0 EQ PUSH2 0x44F JUMPI DUP1 PUSH4 0x850A1501 EQ PUSH2 0x46F JUMPI DUP1 PUSH4 0x88EC79FB EQ PUSH2 0x484 JUMPI DUP1 PUSH4 0x8BC8EFB3 EQ PUSH2 0x4A4 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x60704108 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x6A1A80FD EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0x6FCF3E9E EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x77FCCE68 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x78D29AC1 EQ PUSH2 0x3FC JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x2AC12622 GT PUSH2 0x224 JUMPI DUP1 PUSH4 0x2AC12622 EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0x2DA62987 EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x369DA099 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x46C02D7A EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x4F9559B1 EQ PUSH2 0x376 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x228E168 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xEFCA185 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x1CE4C78B EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0x2280C910 EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x288CDC91 EQ PUSH2 0x2F0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x27C CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0x70A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4E73 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x71F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C3 PUSH2 0x733 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4E81 JUMP JUMPDEST PUSH2 0x2E3 PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x47FE JUMP JUMPDEST PUSH2 0x739 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x5007 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C3 PUSH2 0x30B CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0x77B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0x78D JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x4675 JUMP JUMPDEST PUSH2 0x7A2 JUMP JUMPDEST PUSH2 0x356 PUSH2 0x351 CALLDATASIZE PUSH1 0x4 PUSH2 0x44DF JUMP JUMPDEST PUSH2 0x7C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x5252 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x371 CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0x8ED JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x384 CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0x935 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x3A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x461B JUMP JUMPDEST PUSH2 0xA1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4DB8 JUMP JUMPDEST PUSH2 0x3C9 PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x439E JUMP JUMPDEST PUSH2 0xA44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x5241 JUMP JUMPDEST PUSH2 0x3C9 PUSH2 0x3E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x439E JUMP JUMPDEST PUSH2 0xA7C JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x3F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x427E JUMP JUMPDEST PUSH2 0xA9A JUMP JUMPDEST PUSH2 0x356 PUSH2 0x40A CALLDATASIZE PUSH1 0x4 PUSH2 0x44DF JUMP JUMPDEST PUSH2 0xB32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x42A CALLDATASIZE PUSH1 0x4 PUSH2 0x4244 JUMP JUMPDEST PUSH2 0xC82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x44A CALLDATASIZE PUSH1 0x4 PUSH2 0x45C1 JUMP JUMPDEST PUSH2 0xCA2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x46A CALLDATASIZE PUSH1 0x4 PUSH2 0x45A2 JUMP JUMPDEST PUSH2 0xD01 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0xD21 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x492 CALLDATASIZE PUSH1 0x4 PUSH2 0x4706 JUMP JUMPDEST PUSH2 0xD30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x5260 JUMP JUMPDEST PUSH2 0x356 PUSH2 0x4B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x44DF JUMP JUMPDEST PUSH2 0xD4E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x4D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x47FE JUMP JUMPDEST PUSH2 0xD82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0xDA7 JUMP JUMPDEST PUSH2 0x4FF PUSH2 0x4FA CALLDATASIZE PUSH1 0x4 PUSH2 0x444E JUMP JUMPDEST PUSH2 0xDB6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4E62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x518 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0xEE1 JUMP JUMPDEST PUSH2 0x4FF PUSH2 0x53A CALLDATASIZE PUSH1 0x4 PUSH2 0x444E JUMP JUMPDEST PUSH2 0xF29 JUMP JUMPDEST PUSH2 0x356 PUSH2 0x54D CALLDATASIZE PUSH1 0x4 PUSH2 0x47B6 JUMP JUMPDEST PUSH2 0xFF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x572 PUSH2 0x56D CALLDATASIZE PUSH1 0x4 PUSH2 0x4675 JUMP JUMPDEST PUSH2 0x1015 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x526F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x59A CALLDATASIZE PUSH1 0x4 PUSH2 0x46A9 JUMP JUMPDEST PUSH2 0x10FD JUMP JUMPDEST PUSH2 0x356 PUSH2 0x5AD CALLDATASIZE PUSH1 0x4 PUSH2 0x44DF JUMP JUMPDEST PUSH2 0x1122 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x5CD CALLDATASIZE PUSH1 0x4 PUSH2 0x42AE JUMP JUMPDEST PUSH2 0x1156 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x5E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4706 JUMP JUMPDEST PUSH2 0x11E8 JUMP JUMPDEST PUSH2 0x4FF PUSH2 0x5F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x444E JUMP JUMPDEST PUSH2 0x1206 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x613 CALLDATASIZE PUSH1 0x4 PUSH2 0x4226 JUMP JUMPDEST PUSH2 0x12BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C3 PUSH2 0x12CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x639 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x648 CALLDATASIZE PUSH1 0x4 PUSH2 0x4226 JUMP JUMPDEST PUSH2 0x12D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C3 PUSH2 0x668 CALLDATASIZE PUSH1 0x4 PUSH2 0x4244 JUMP JUMPDEST PUSH2 0x13F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x682 PUSH2 0x1414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4FEB JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x69D CALLDATASIZE PUSH1 0x4 PUSH2 0x436A JUMP JUMPDEST PUSH2 0x141F JUMP JUMPDEST PUSH2 0x356 PUSH2 0x6B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x47B6 JUMP JUMPDEST PUSH2 0x1461 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x147C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x6E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4226 JUMP JUMPDEST PUSH2 0x148B JUMP JUMPDEST PUSH2 0x6FD PUSH2 0x6F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4527 JUMP JUMPDEST PUSH2 0x14FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4E51 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x727 PUSH2 0x1625 JUMP JUMPDEST PUSH2 0x731 PUSH1 0x0 PUSH2 0x1652 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x743 PUSH2 0x16BB JUMP JUMPDEST ISZERO PUSH2 0x759 JUMPI PUSH2 0x752 DUP4 DUP4 PUSH2 0x16CB JUMP JUMPDEST SWAP1 POP PUSH2 0x775 JUMP JUMPDEST PUSH2 0x761 PUSH2 0x17C7 JUMP JUMPDEST PUSH2 0x76B DUP4 DUP4 PUSH2 0x16CB JUMP JUMPDEST SWAP1 POP PUSH2 0x775 PUSH2 0x17DC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x7AA PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x7BB PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x7C3 PUSH2 0x187C JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x7CE PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x7D6 PUSH2 0x16BB JUMP JUMPDEST ISZERO PUSH2 0x86C JUMPI DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x865 JUMPI PUSH1 0x0 PUSH2 0x800 DUP5 PUSH1 0x20 ADD MLOAD DUP8 PUSH2 0x188B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x80A PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x83B DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x819 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP9 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x82E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x18AA JUMP JUMPDEST SWAP1 POP PUSH2 0x847 DUP6 DUP3 PUSH2 0x199B JUMP JUMPDEST SWAP5 POP DUP7 DUP6 PUSH1 0x20 ADD MLOAD LT PUSH2 0x85B JUMPI POP POP PUSH2 0x865 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP POP PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x874 PUSH2 0x17C7 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x8DC JUMPI PUSH1 0x0 PUSH2 0x899 DUP5 PUSH1 0x20 ADD MLOAD DUP8 PUSH2 0x188B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x8A3 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x8B2 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x819 JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0x8BE DUP6 DUP3 PUSH2 0x199B JUMP JUMPDEST SWAP5 POP DUP7 DUP6 PUSH1 0x20 ADD MLOAD LT PUSH2 0x8D2 JUMPI POP POP PUSH2 0x8DC JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x879 JUMP JUMPDEST POP POP PUSH2 0x8E6 PUSH2 0x17DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8F5 PUSH2 0x17F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FF PUSH2 0x1A36 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE POP PUSH2 0x7BB PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x93D PUSH2 0x17F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x947 PUSH2 0x1A36 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ PUSH2 0x961 JUMPI CALLER PUSH2 0x964 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 DUP5 ADD SWAP1 DUP1 DUP3 GT PUSH2 0x9AC JUMPI PUSH2 0x9AC PUSH2 0x9A7 DUP6 DUP6 DUP5 PUSH2 0x1A5B JUMP JUMPDEST PUSH2 0x1AB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE MLOAD PUSH32 0x82AF639571738F4EBD4268FB0363D8957EBE1BBB9E78DBA5EBD69EED39B154F0 SWAP1 PUSH2 0xA07 SWAP1 DUP7 SWAP1 PUSH2 0x4E81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0x7BB PUSH2 0x1868 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA4C PUSH2 0x3BCC JUMP JUMPDEST PUSH2 0xA54 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0xA62 DUP6 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x1ABD JUMP JUMPDEST SWAP1 POP PUSH2 0xA6C PUSH2 0x1868 JUMP JUMPDEST PUSH2 0xA74 PUSH2 0x187C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xA84 PUSH2 0x3BCC JUMP JUMPDEST PUSH2 0xA8C PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0xA62 DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x1ABD JUMP JUMPDEST PUSH2 0xAA2 PUSH2 0x17F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAC PUSH2 0x1A36 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xA8656E308026EEABCE8F0BC18048433252318AB80AC79DA0B3D3D8697DFBA891 SWAP1 PUSH2 0xB15 SWAP1 DUP7 SWAP1 PUSH2 0x4E73 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0xB26 PUSH2 0x1868 JUMP JUMPDEST PUSH2 0xB2E PUSH2 0x187C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB3A PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0xB42 PUSH2 0x16BB JUMP JUMPDEST ISZERO PUSH2 0xC00 JUMPI DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x865 JUMPI DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0xB69 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBA6 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB7C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xA0 ADD MLOAD DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB94 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP5 PUSH2 0x1E2A JUMP JUMPDEST SWAP1 POP PUSH2 0xBB0 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0xBD4 DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xBBF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP10 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x82E JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0xBE0 DUP7 DUP3 PUSH2 0x199B JUMP JUMPDEST SWAP6 POP DUP8 DUP7 PUSH1 0x0 ADD MLOAD LT PUSH2 0xBF5 JUMPI POP POP POP PUSH2 0x865 JUMP JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0xB4C JUMP JUMPDEST PUSH2 0xC08 PUSH2 0x17C7 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x8DC JUMPI DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0xC2A SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC3D DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB7C JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0xC47 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0xC56 DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xBBF JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0xC62 DUP7 DUP3 PUSH2 0x199B JUMP JUMPDEST SWAP6 POP DUP8 DUP7 PUSH1 0x0 ADD MLOAD LT PUSH2 0xC77 JUMPI POP POP POP PUSH2 0x8DC JUMP JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0xC0D JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCB0 DUP6 DUP6 DUP6 PUSH2 0x1E6C JUMP JUMPDEST SWAP1 POP PUSH1 0x5 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0xCC0 JUMPI INVALID JUMPDEST EQ DUP1 PUSH2 0xCD7 JUMPI POP PUSH1 0x7 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0xCD5 JUMPI INVALID JUMPDEST EQ JUMPDEST ISZERO PUSH2 0xCEC JUMPI PUSH2 0xCEC PUSH2 0x9A7 PUSH1 0x5 DUP8 DUP8 DUP8 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0xCF8 DUP2 DUP7 DUP7 DUP7 PUSH2 0x1F3B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xD38 PUSH2 0x3BF4 JUMP JUMPDEST PUSH2 0xD40 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0xA62 DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x2173 JUMP JUMPDEST PUSH2 0xD56 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0xD61 DUP5 DUP5 DUP5 PUSH2 0xB32 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x0 ADD MLOAD LT ISZERO PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x0 DUP6 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x2260 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xD9A PUSH1 0x1 SLOAD DUP6 PUSH2 0x227F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0xA74 DUP5 DUP3 DUP6 PUSH2 0x2293 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDC0 PUSH2 0x16BB JUMP JUMPDEST ISZERO PUSH2 0xE63 JUMPI DUP4 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0xE00 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xDED PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xDE5 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x865 JUMPI PUSH2 0xE44 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE1C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xE30 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x82E JUMPI INVALID JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE50 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xE06 JUMP JUMPDEST PUSH2 0xE6B PUSH2 0x17C7 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0xEA6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xE93 PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xE8B JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x8DC JUMPI PUSH2 0xEC2 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE1C JUMPI INVALID JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xECE JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xEAC JUMP JUMPDEST PUSH2 0xEE9 PUSH2 0x1625 JUMP JUMPDEST PUSH32 0x3A3E76D7A75E198AEF1F53137E4F2A8A2EC74E2E9526DB8404D08CCC9F1E621D PUSH1 0x3 SLOAD DUP3 PUSH1 0x40 MLOAD PUSH2 0xF1C SWAP3 SWAP2 SWAP1 PUSH2 0x4ECA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF33 PUSH2 0x17F1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0xF6E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xF5B PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xF53 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0xFDE JUMPI PUSH2 0xFBF DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF8A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF9E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2319 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xFCB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xF74 JUMP JUMPDEST POP POP PUSH2 0xFE8 PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x8E6 PUSH2 0x187C JUMP JUMPDEST PUSH2 0xFF8 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x1000 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x100B DUP5 DUP5 DUP5 PUSH2 0x2319 JUMP JUMPDEST SWAP1 POP PUSH2 0xFE8 PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x101D PUSH2 0x3C28 JUMP JUMPDEST PUSH2 0x1026 DUP3 PUSH2 0x23BB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x1052 JUMPI DUP1 PUSH1 0x1 JUMPDEST SWAP1 DUP2 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x104A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH2 0xA3F JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x1063 JUMPI DUP1 PUSH1 0x2 PUSH2 0x103D JUMP JUMPDEST DUP2 PUSH1 0xA0 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD LT PUSH2 0x107A JUMPI DUP1 PUSH1 0x5 PUSH2 0x103D JUMP JUMPDEST DUP2 PUSH2 0x100 ADD MLOAD TIMESTAMP LT PUSH2 0x108E JUMPI DUP1 PUSH1 0x4 PUSH2 0x103D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x10B3 JUMPI DUP1 PUSH1 0x6 PUSH2 0x103D JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x60 DUP9 ADD MLOAD SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD GT ISZERO PUSH2 0x10F4 JUMPI DUP1 PUSH1 0x6 PUSH2 0x103D JUMP JUMPDEST PUSH1 0x3 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1115 PUSH1 0x1 SLOAD DUP6 PUSH2 0x23EC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0xA74 DUP5 DUP3 DUP6 PUSH2 0x23FB JUMP JUMPDEST PUSH2 0x112A PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x1135 DUP5 DUP5 DUP5 PUSH2 0x7C6 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x20 ADD MLOAD LT ISZERO PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x1 DUP6 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x2260 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x11C6 JUMPI PUSH2 0x11BE DUP2 PUSH1 0x0 SHL DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1175 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1189 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x119D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x11B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x115B JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11DF SWAP1 PUSH2 0x5231 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11F0 PUSH2 0x3BF4 JUMP JUMPDEST PUSH2 0x11F8 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0xA62 DUP6 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x2173 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1210 PUSH2 0x17F1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0x124B JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1238 PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1230 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0xFDE JUMPI PUSH2 0x129C DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1267 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x127B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x128F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x259F JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12A8 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1251 JUMP JUMPDEST PUSH2 0x12C3 PUSH2 0x1625 JUMP JUMPDEST PUSH2 0x7C3 DUP2 PUSH2 0x1652 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x12DA PUSH2 0x1625 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE25532E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1329 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x134D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4639 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1386 JUMPI PUSH2 0x1386 PUSH2 0x9A7 DUP4 DUP4 PUSH2 0x25D2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE MLOAD PUSH32 0xD2C6B762299C609BDB96520B58A49BFB80186934D4F71A86A367571A15C03194 SWAP1 PUSH2 0x13EA SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH4 0x20C13B0B PUSH1 0xE0 SHL DUP2 JUMP JUMPDEST PUSH2 0x1427 PUSH2 0x17F1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1457 JUMPI PUSH2 0x144F DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1442 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1823 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x142C JUMP JUMPDEST POP POP PUSH2 0x7BB PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x1469 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x1471 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x100B DUP5 DUP5 DUP5 PUSH2 0x259F JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1493 PUSH2 0x1625 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x14B1 JUMPI PUSH2 0x14AC PUSH2 0x9A7 PUSH2 0x2629 JUMP JUMPDEST PUSH2 0x7C3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1506 PUSH2 0x16BB JUMP JUMPDEST ISZERO PUSH2 0x15A3 JUMPI DUP3 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0x1540 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x152B JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x159C JUMPI PUSH2 0x157D DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x155C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1570 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x16CB JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1589 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1546 JUMP JUMPDEST POP POP PUSH2 0x775 JUMP JUMPDEST PUSH2 0x15AB PUSH2 0x17C7 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0x15E0 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x15CB JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x161B JUMPI PUSH2 0x15FC DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x155C JUMPI INVALID JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1608 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x15E6 JUMP JUMPDEST POP POP PUSH2 0x775 PUSH2 0x17DC JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x731 JUMPI PUSH1 0x0 SLOAD PUSH2 0x731 SWAP1 PUSH2 0x9A7 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2647 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 MLOAD PUSH32 0xE1A5430EBEC577336427F40F15822F1F36C5E3509FF209D6DB9E6C9E6941CB0B SWAP2 PUSH2 0x1691 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x4DC6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x16E4 PUSH1 0x1 SLOAD DUP6 PUSH2 0x227F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x16F1 DUP5 DUP5 DUP4 PUSH2 0x2664 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x1700 DUP2 DUP1 PUSH2 0x271E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x80 DUP8 ADD MLOAD SWAP1 MLOAD PUSH1 0x60 SWAP2 ADDRESS SWAP2 PUSH2 0x1730 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x176B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1770 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1787 JUMPI PUSH2 0x1787 PUSH2 0x9A7 DUP6 DUP4 PUSH2 0x274F JUMP JUMPDEST PUSH2 0x1792 DUP4 PUSH1 0x0 PUSH2 0x271E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH32 0xA4A7329F1DD821363067E07D359E347B4AF9B1EFE4B6CCCF13240228AF3C800D SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT AND PUSH1 0x1 PUSH1 0xA8 SHL OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT AND SWAP1 SSTORE PUSH2 0x731 PUSH2 0x276C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x180E JUMPI PUSH2 0x180E PUSH2 0x9A7 PUSH2 0x27A0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x182B PUSH2 0x3C28 JUMP JUMPDEST PUSH2 0x1834 DUP3 PUSH2 0x1015 JUMP JUMPDEST SWAP1 POP PUSH2 0x1840 DUP3 DUP3 PUSH2 0x27BE JUMP JUMPDEST PUSH1 0x3 DUP2 MLOAD PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x184F JUMPI INVALID JUMPDEST EQ PUSH2 0x185A JUMPI POP PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0xB2E DUP3 DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x2839 JUMP JUMPDEST PUSH2 0x1870 PUSH2 0x16BB JUMP JUMPDEST PUSH2 0x731 JUMPI PUSH2 0x731 PUSH2 0x276C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x18A4 JUMPI PUSH2 0x18A4 PUSH2 0x9A7 PUSH1 0x2 DUP6 DUP6 PUSH2 0x28B7 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x18B2 PUSH2 0x3B9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x4DA26AAB PUSH1 0xE1 SHL SWAP1 PUSH2 0x18D3 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x529D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1924 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x195F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1964 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x1991 JUMPI DUP1 MLOAD PUSH1 0xA0 EQ PUSH2 0x197A JUMPI INVALID JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x198E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4657 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x19A3 PUSH2 0x3B9D JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH2 0x19B6 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH2 0x19D1 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH2 0x19EF SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH2 0x1A0D SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH2 0x1A2B SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 DUP2 ISZERO PUSH2 0x1A52 JUMPI DUP2 PUSH2 0x1A54 JUMP JUMPDEST CALLER JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x4AD31275 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DE1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH2 0x1AC5 PUSH2 0x3BCC JUMP JUMPDEST DUP6 MLOAD PUSH2 0x1AD8 JUMPI PUSH2 0x1AD8 PUSH2 0x9A7 PUSH1 0x0 PUSH2 0x28F2 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x1AEB JUMPI PUSH2 0x1AEB PUSH2 0x9A7 PUSH1 0x1 PUSH2 0x28F2 JUMP JUMPDEST DUP4 MLOAD DUP7 MLOAD EQ PUSH2 0x1B01 JUMPI PUSH2 0x1B01 PUSH2 0x9A7 PUSH1 0x2 PUSH2 0x28F2 JUMP JUMPDEST DUP3 MLOAD DUP6 MLOAD EQ PUSH2 0x1B17 JUMPI PUSH2 0x1B17 PUSH2 0x9A7 PUSH1 0x3 PUSH2 0x28F2 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1B52 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1B3F PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B37 JUMPI SWAP1 POP JUMPDEST POP DUP2 MSTORE DUP5 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE SWAP1 DUP1 ISZERO PUSH2 0x1B90 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1B7D PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B75 JUMPI SWAP1 POP JUMPDEST POP PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP1 PUSH2 0x1BA1 PUSH2 0x3C4A JUMP JUMPDEST DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1BAE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1BC0 PUSH2 0x3C4A JUMP JUMPDEST DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1BCD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1BE2 DUP4 PUSH2 0x23BB JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x1BF0 DUP4 PUSH2 0x23BB JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1BFB PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x1C03 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x1C0B PUSH2 0x3BF4 JUMP JUMPDEST PUSH2 0x1C3E DUP8 DUP8 DUP16 DUP13 DUP2 MLOAD DUP2 LT PUSH2 0x1C1C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP16 DUP13 DUP2 MLOAD DUP2 LT PUSH2 0x1C30 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP16 PUSH2 0x2173 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x1C58 SWAP1 DUP7 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST SWAP5 POP PUSH2 0x1C75 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP6 PUSH2 0x28D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP PUSH2 0x1C85 DUP4 DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x199B JUMP JUMPDEST SWAP3 POP PUSH2 0x1C95 DUP3 DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x199B JUMP JUMPDEST SWAP2 POP PUSH2 0x1CB2 DUP2 PUSH1 0x40 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD PUSH2 0x28D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP12 ADD MLOAD PUSH2 0x1CD0 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0xA0 DUP8 ADD MLOAD DUP6 LT PUSH2 0x1D7B JUMPI DUP10 MLOAD DUP1 MLOAD PUSH1 0x1 DUP12 ADD SWAP11 DUP6 SWAP3 SWAP2 DUP2 LT PUSH2 0x1CF4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP DUP15 MLOAD DUP10 EQ ISZERO PUSH2 0x1D58 JUMPI DUP2 DUP11 PUSH1 0x20 ADD MLOAD DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x1D47 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP PUSH2 0x1E19 JUMP JUMPDEST DUP15 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x1D64 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP7 POP PUSH2 0x1D77 DUP8 PUSH2 0x23BB JUMP JUMPDEST SWAP6 POP POP JUMPDEST DUP6 PUSH1 0xA0 ADD MLOAD DUP5 LT PUSH2 0x1E13 JUMPI DUP2 DUP11 PUSH1 0x20 ADD MLOAD DUP10 DUP1 PUSH1 0x1 ADD SWAP11 POP DUP2 MLOAD DUP2 LT PUSH2 0x1D9D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP2 POP DUP14 MLOAD DUP9 EQ ISZERO PUSH2 0x1DF0 JUMPI DUP3 DUP11 PUSH1 0x0 ADD MLOAD DUP11 DUP2 MLOAD DUP2 LT PUSH2 0x1D47 JUMPI INVALID JUMPDEST DUP14 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x1DFC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP6 POP PUSH2 0x1E0F DUP7 PUSH2 0x23BB JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP PUSH2 0x1C03 JUMP JUMPDEST POP POP POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP4 PUSH2 0x1E60 PUSH2 0x1E44 DUP3 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST PUSH2 0x1E54 DUP9 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2977 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E79 DUP5 DUP5 DUP5 PUSH2 0x29A1 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1E99 JUMPI PUSH2 0x1E99 PUSH2 0x9A7 PUSH1 0x6 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x8 DUP2 DUP2 DUP2 GT ISZERO PUSH2 0x1EA6 JUMPI INVALID JUMPDEST PUSH1 0xFF AND LT PUSH2 0x1EBE JUMPI PUSH2 0x1EBE PUSH2 0x9A7 PUSH1 0x3 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x1ECC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x4 DUP7 DUP7 DUP7 JUMPDEST PUSH1 0x60 PUSH4 0x7E5A2318 PUSH1 0xE0 SHL DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1EFF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x51E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x1F4B JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1F72 JUMPI DUP2 MLOAD PUSH1 0x1 EQ PUSH2 0x1F6A JUMPI PUSH2 0x1F6A PUSH2 0x9A7 PUSH1 0x2 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xA74 JUMP JUMPDEST PUSH1 0x2 DUP6 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x1F80 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x204E JUMPI DUP2 MLOAD PUSH1 0x42 EQ PUSH2 0x1F9F JUMPI PUSH2 0x1F9F PUSH2 0x9A7 PUSH1 0x2 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1FAE JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x0 PUSH2 0x1FCB DUP5 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x29E0 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FE0 DUP6 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x29E0 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP9 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x2007 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FB6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2029 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP2 AND EQ SWAP6 POP PUSH2 0xA74 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP6 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x205C JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2109 JUMPI DUP2 MLOAD PUSH1 0x42 EQ PUSH2 0x207B JUMPI PUSH2 0x207B PUSH2 0x9A7 PUSH1 0x2 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x208A JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x0 PUSH2 0x20A7 DUP5 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x29E0 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x20BC DUP6 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x29E0 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x20D3 SWAP2 SWAP1 PUSH2 0x4D98 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x2007 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FB6 JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x2117 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x212F JUMPI PUSH2 0x2128 DUP5 DUP5 DUP5 PUSH2 0x2A0A JUMP JUMPDEST SWAP1 POP PUSH2 0xA74 JUMP JUMPDEST PUSH1 0x6 DUP6 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x213D JUMPI INVALID JUMPDEST EQ PUSH2 0x2144 JUMPI INVALID JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x217B PUSH2 0x3BF4 JUMP JUMPDEST PUSH2 0x160 DUP1 DUP8 ADD MLOAD PUSH2 0x140 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP8 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH2 0x219B PUSH2 0x3C28 JUMP JUMPDEST PUSH2 0x21A4 DUP8 PUSH2 0x1015 JUMP JUMPDEST SWAP1 POP PUSH2 0x21AE PUSH2 0x3C28 JUMP JUMPDEST PUSH2 0x21B7 DUP8 PUSH2 0x1015 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x21C3 PUSH2 0x1A36 JUMP JUMPDEST SWAP1 POP PUSH2 0x21D1 DUP10 DUP5 DUP4 DUP11 PUSH2 0x2B43 JUMP JUMPDEST PUSH2 0x21DD DUP9 DUP4 DUP4 DUP10 PUSH2 0x2B43 JUMP JUMPDEST PUSH2 0x21F1 DUP10 DUP10 DUP6 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x2C1A JUMP JUMPDEST PUSH2 0x220A DUP10 DUP10 DUP6 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x3 SLOAD GASPRICE DUP12 PUSH2 0x2C5F JUMP JUMPDEST SWAP4 POP PUSH2 0x2225 DUP10 DUP3 DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x0 ADD MLOAD PUSH2 0x2DB4 JUMP JUMPDEST PUSH2 0x223E DUP9 DUP3 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD PUSH2 0x2DB4 JUMP JUMPDEST PUSH2 0x2254 DUP4 PUSH1 0x20 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP12 DUP12 DUP6 DUP10 PUSH2 0x2E78 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH4 0x18E4B141 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x51CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E6 DUP3 PUSH2 0x228E DUP6 PUSH2 0x3005 JUMP JUMPDEST PUSH2 0x3080 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 PUSH2 0x22A7 DUP6 DUP4 DUP7 PUSH2 0x1E6C JUMP JUMPDEST SWAP1 POP PUSH1 0x5 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x22B7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x22D9 JUMPI PUSH2 0x22D2 PUSH2 0x22CA DUP8 DUP8 PUSH2 0x309F JUMP JUMPDEST DUP7 DUP5 DUP8 PUSH2 0x30BE JUMP JUMPDEST SWAP3 POP PUSH2 0x2310 JUMP JUMPDEST PUSH1 0x7 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x22E7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2301 JUMPI PUSH2 0x22D2 PUSH2 0x22FA DUP8 DUP8 PUSH2 0x309F JUMP JUMPDEST DUP4 DUP7 PUSH2 0x3147 JUMP JUMPDEST PUSH2 0x230D DUP2 DUP7 DUP5 DUP8 PUSH2 0x1F3B JUMP JUMPDEST SWAP3 POP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2321 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x2329 PUSH2 0x3C28 JUMP JUMPDEST PUSH2 0x2332 DUP6 PUSH2 0x1015 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x233E PUSH2 0x1A36 JUMP JUMPDEST SWAP1 POP PUSH2 0x234C DUP7 DUP4 DUP4 DUP8 PUSH2 0x2B43 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2369 DUP4 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD PUSH2 0x188B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2377 DUP8 DUP4 PUSH2 0x3156 JUMP JUMPDEST SWAP1 POP PUSH2 0x2387 DUP9 DUP3 PUSH1 0x3 SLOAD GASPRICE PUSH2 0x316C JUMP JUMPDEST SWAP5 POP PUSH1 0x0 DUP5 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x23A3 DUP10 DUP6 DUP4 DUP9 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x2DB4 JUMP JUMPDEST PUSH2 0x23AF DUP2 DUP11 DUP7 DUP10 PUSH2 0x31E3 JUMP JUMPDEST POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23D3 PUSH1 0x1 SLOAD DUP5 PUSH2 0x23EC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP3 POP SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E6 DUP3 PUSH2 0x228E DUP6 PUSH2 0x327A JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 DUP2 PUSH2 0x240C DUP6 DUP4 DUP7 PUSH2 0x1E6C JUMP JUMPDEST SWAP1 POP PUSH1 0x5 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x241C JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x242F JUMPI PUSH2 0x22D2 PUSH2 0x22CA DUP8 DUP8 PUSH2 0x3333 JUMP JUMPDEST PUSH1 0x7 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x243D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2301 JUMPI PUSH2 0x22D2 PUSH2 0x22FA DUP8 DUP8 PUSH2 0x3333 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2598 JUMPI PUSH1 0x20 DUP5 MLOAD DUP2 PUSH2 0x2461 JUMPI INVALID JUMPDEST MOD PUSH1 0x4 EQ PUSH2 0x2478 JUMPI PUSH2 0x2478 PUSH2 0x9A7 PUSH1 0x0 DUP8 DUP8 PUSH2 0x3352 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x248A DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x3371 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x24C4 JUMPI PUSH2 0x24C4 PUSH2 0x9A7 PUSH1 0x1 DUP10 DUP10 PUSH2 0x3352 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x2A179679 PUSH1 0xE2 SHL SWAP1 PUSH2 0x24E7 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x24 ADD PUSH2 0x5018 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2538 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2575 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x257A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2592 JUMPI PUSH2 0x2592 PUSH2 0x9A7 DUP12 DUP12 DUP5 PUSH2 0x33A5 JUMP JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x25A7 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x25B2 DUP5 DUP5 DUP5 PUSH2 0x2319 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x20 ADD MLOAD EQ PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x2 DUP6 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x2260 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x11C7B720 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4DC6 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD TIMESTAMP LT PUSH2 0x267D JUMPI PUSH2 0x267D PUSH2 0x9A7 PUSH1 0x1 DUP4 PUSH2 0x33C4 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD GASPRICE DUP2 EQ PUSH2 0x2697 JUMPI PUSH2 0x2697 PUSH2 0x9A7 DUP4 GASPRICE DUP5 PUSH2 0x33E1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x26B6 JUMPI PUSH2 0x26B6 PUSH2 0x9A7 DUP5 DUP4 PUSH2 0x3400 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x26DB JUMPI PUSH2 0x26DB PUSH2 0x9A7 PUSH1 0x0 DUP6 PUSH2 0x33C4 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x2701 JUMPI POP PUSH2 0x26FF DUP7 DUP6 DUP8 PUSH2 0x2293 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x2716 JUMPI PUSH2 0x2716 PUSH2 0x9A7 PUSH1 0x1 DUP7 DUP5 DUP10 PUSH2 0x1EDE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ PUSH2 0xB2E JUMPI PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x60 PUSH4 0x20D11F61 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4EE5 JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xB2E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0xC3B823F PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x27F8 JUMPI PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x27F8 JUMPI PUSH2 0x27F8 PUSH2 0x9A7 PUSH1 0x2 DUP4 PUSH1 0x20 ADD MLOAD CALLER PUSH2 0x341D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2802 PUSH2 0x1A36 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2834 JUMPI PUSH2 0x2834 PUSH2 0x9A7 PUSH1 0x0 DUP5 PUSH1 0x20 ADD MLOAD DUP5 PUSH2 0x341D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP3 DUP2 ADD MLOAD DUP4 MLOAD PUSH2 0x140 DUP6 ADD MLOAD PUSH2 0x160 DUP7 ADD MLOAD SWAP4 MLOAD DUP6 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 SWAP4 SWAP1 SWAP4 AND SWAP3 PUSH32 0x2C310A9A43963FF31A754A4099CC435ED498049687539D72D7818D9B093415C SWAP3 PUSH2 0x28AB SWAP3 SWAP1 SWAP2 SWAP1 CALLER SWAP1 PUSH2 0x506A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH4 0xE946C1BB PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5197 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x0 DUP7 DUP7 PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xD4092F4F PUSH1 0xE0 SHL DUP3 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x290D SWAP2 SWAP1 PUSH2 0x5189 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2955 JUMPI POP PUSH1 0x0 PUSH2 0x775 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2962 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x1 DUP7 DUP7 PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x298D JUMPI PUSH2 0x298D PUSH2 0x9A7 PUSH1 0x3 DUP6 DUP6 PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x2998 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x29BD JUMPI PUSH2 0x29BD PUSH2 0x9A7 PUSH1 0x2 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x29CD JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR PUSH1 0x8 DUP2 GT ISZERO PUSH2 0xA74 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO PUSH2 0x2A01 JUMPI PUSH2 0x2A01 PUSH2 0x9A7 PUSH1 0x5 DUP6 MLOAD DUP6 PUSH1 0x20 ADD PUSH2 0x343C JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2A23 DUP4 PUSH1 0x0 NOT DUP4 ADD PUSH4 0xFFFFFFFF PUSH2 0x345B AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 PUSH2 0x2A42 SWAP1 DUP9 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x4EE5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP PUSH2 0x2A86 DUP5 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x345B AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2AA2 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2ADD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2AE2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2AF5 JUMPI POP DUP1 MLOAD PUSH1 0x20 EQ JUMPDEST ISZERO PUSH2 0x2B29 JUMPI PUSH4 0xB0671381 PUSH1 0xE0 SHL PUSH2 0x2B13 DUP3 PUSH1 0x0 PUSH4 0xFFFFFFFF PUSH2 0x3371 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ SWAP5 POP POP POP POP POP PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x2B38 PUSH2 0x9A7 DUP10 DUP10 DUP10 DUP6 PUSH2 0x345F JUMP JUMPDEST POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP4 MLOAD PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x2B52 JUMPI INVALID JUMPDEST EQ PUSH2 0x2B6C JUMPI PUSH2 0x2B6C PUSH2 0x9A7 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x3480 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2BA6 JUMPI PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2BA6 JUMPI PUSH2 0x2BA6 PUSH2 0x9A7 PUSH1 0x2 DUP6 PUSH1 0x20 ADD MLOAD CALLER PUSH2 0x341D JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2BE9 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2BE9 JUMPI PUSH2 0x2BE9 PUSH2 0x9A7 PUSH1 0x1 DUP6 PUSH1 0x20 ADD MLOAD DUP6 PUSH2 0x341D JUMP JUMPDEST PUSH2 0x2BF8 DUP5 DUP5 PUSH1 0x20 ADD MLOAD DUP4 PUSH2 0x23FB JUMP JUMPDEST PUSH2 0x2C14 JUMPI PUSH2 0x2C14 PUSH2 0x9A7 PUSH1 0x0 DUP6 PUSH1 0x20 ADD MLOAD DUP8 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x1EDE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MLOAD PUSH2 0x2C33 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST PUSH1 0x80 DUP1 DUP6 ADD MLOAD SWAP1 DUP7 ADD MLOAD PUSH2 0x2C4C SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST LT ISZERO PUSH2 0x2C14 JUMPI PUSH2 0x2C14 PUSH2 0x9A7 DUP4 DUP4 PUSH2 0x349D JUMP JUMPDEST PUSH2 0x2C67 PUSH2 0x3BF4 JUMP JUMPDEST PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2C7F SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C96 DUP11 PUSH1 0x80 ADD MLOAD DUP12 PUSH1 0xA0 ADD MLOAD DUP5 PUSH2 0x34BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CB1 DUP9 DUP12 PUSH1 0xA0 ADD MLOAD PUSH2 0x188B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CC8 DUP12 PUSH1 0x80 ADD MLOAD DUP13 PUSH1 0xA0 ADD MLOAD DUP5 PUSH2 0x34BA JUMP JUMPDEST SWAP1 POP DUP6 ISZERO PUSH2 0x2CE5 JUMPI PUSH2 0x2CDE DUP13 DUP13 DUP6 DUP8 DUP6 DUP8 PUSH2 0x34EE JUMP JUMPDEST SWAP5 POP PUSH2 0x2CF6 JUMP JUMPDEST PUSH2 0x2CF3 DUP13 DUP13 DUP6 DUP8 DUP6 DUP8 PUSH2 0x35C0 JUMP JUMPDEST SWAP5 POP JUMPDEST DUP5 MLOAD MLOAD PUSH1 0x80 DUP14 ADD MLOAD PUSH1 0xC0 DUP15 ADD MLOAD PUSH2 0x2D0E SWAP3 SWAP2 SWAP1 PUSH2 0x34BA JUMP JUMPDEST DUP6 MLOAD PUSH1 0x40 ADD MSTORE DUP5 MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0xA0 DUP14 ADD MLOAD PUSH1 0xE0 DUP15 ADD MLOAD PUSH2 0x2D2F SWAP3 SWAP2 SWAP1 PUSH2 0x34BA JUMP JUMPDEST DUP6 MLOAD PUSH1 0x60 ADD MSTORE PUSH1 0x20 DUP6 ADD MLOAD MLOAD PUSH1 0x80 DUP13 ADD MLOAD PUSH1 0xC0 DUP14 ADD MLOAD PUSH2 0x2D50 SWAP3 SWAP2 SWAP1 PUSH2 0x34BA JUMP JUMPDEST DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x2D78 DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP13 PUSH1 0xA0 ADD MLOAD DUP14 PUSH1 0xE0 ADD MLOAD PUSH2 0x34BA JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 ADD MSTORE PUSH1 0x0 PUSH2 0x2D93 DUP9 DUP11 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST DUP7 MLOAD PUSH1 0x80 SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x20 DUP9 ADD MLOAD ADD MSTORE POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x2DCA SWAP1 DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6869791F0A34781B29882982CC39E882768CF2C96995C2A110C577C53BC932D5 DUP9 PUSH2 0x140 ADD MLOAD DUP10 PUSH2 0x160 ADD MLOAD DUP11 PUSH2 0x180 ADD MLOAD DUP12 PUSH2 0x1A0 ADD MLOAD DUP12 CALLER DUP11 PUSH1 0x0 ADD MLOAD DUP12 PUSH1 0x20 ADD MLOAD DUP13 PUSH1 0x40 ADD MLOAD DUP14 PUSH1 0x60 ADD MLOAD DUP15 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x2E69 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x509E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST DUP4 MLOAD DUP4 MLOAD PUSH1 0x40 DUP1 DUP8 ADD MLOAD SWAP1 DUP7 ADD MLOAD PUSH2 0x140 DUP8 ADD MLOAD DUP6 MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2EA1 SWAP2 DUP12 SWAP2 DUP7 SWAP1 DUP9 SWAP1 PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2EBB DUP11 DUP10 PUSH2 0x140 ADD MLOAD DUP7 DUP7 DUP10 PUSH1 0x20 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2ED5 DUP10 DUP9 PUSH2 0x180 ADD MLOAD DUP6 DUP5 DUP10 PUSH1 0x20 ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2EEF DUP11 DUP10 PUSH2 0x180 ADD MLOAD DUP7 DUP6 DUP10 PUSH1 0x0 ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2F05 DUP11 DUP10 PUSH2 0x140 ADD MLOAD DUP7 DUP10 DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2F1B DUP10 DUP9 PUSH2 0x140 ADD MLOAD DUP6 DUP10 DUP10 PUSH1 0x60 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F33 DUP12 DUP12 DUP9 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD DUP9 DUP9 DUP13 PUSH2 0x3659 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2F50 JUMPI DUP6 MLOAD PUSH1 0x0 PUSH1 0x80 SWAP2 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP9 ADD MLOAD SWAP1 SWAP2 ADD MSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x2F86 JUMPI POP PUSH2 0x1A0 DUP1 DUP10 ADD MLOAD SWAP1 DUP11 ADD MLOAD PUSH2 0x2F86 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x36A8 AND JUMP JUMPDEST ISZERO PUSH2 0x2FC4 JUMPI PUSH2 0x2FBF DUP12 DUP11 PUSH2 0x1A0 ADD MLOAD DUP10 DUP7 PUSH2 0x2FBA DUP12 PUSH1 0x20 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP13 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH2 0x28D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2FF8 JUMP JUMPDEST PUSH2 0x2FDE DUP11 DUP10 PUSH2 0x1A0 ADD MLOAD DUP10 DUP6 DUP11 PUSH1 0x20 ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2FF8 DUP12 DUP11 PUSH2 0x1A0 ADD MLOAD DUP10 DUP7 DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 DUP2 ADD MLOAD DUP3 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x40 DUP1 DUP8 ADD MLOAD PUSH1 0x60 SWAP8 DUP9 ADD MLOAD DUP7 MLOAD SWAP7 DUP6 ADD SWAP7 SWAP1 SWAP7 KECCAK256 DUP3 MLOAD PUSH32 0xEC69816980A3A3CA4554410E60253953E9FF375BA4536A98ADFA15CC71541508 DUP2 MSTORE SWAP5 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x37811F6D PUSH1 0xE2 SHL SWAP1 PUSH2 0x25EF SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x24 ADD PUSH2 0x52BD JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x15 DUP2 LT ISZERO PUSH2 0x30DC JUMPI PUSH2 0x30DC PUSH2 0x9A7 PUSH1 0x2 DUP8 DUP8 DUP8 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30F2 DUP5 PUSH1 0x14 NOT DUP5 ADD PUSH4 0xFFFFFFFF PUSH2 0x36CD AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0x312F JUMPI PUSH2 0x312F PUSH2 0x9A7 DUP7 DUP4 PUSH2 0x3700 JUMP JUMPDEST PUSH2 0x313C DUP2 DUP9 DUP7 PUSH1 0x15 PUSH2 0x371D JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP4 DUP6 DUP5 PUSH1 0x1 PUSH2 0x371D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x3165 JUMPI DUP2 PUSH2 0x8E6 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3174 PUSH2 0x3B9D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x3190 SWAP2 DUP7 SWAP2 PUSH2 0x34BA JUMP JUMPDEST DUP2 MSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x31A7 SWAP2 DUP7 SWAP2 PUSH2 0x34BA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0xE0 DUP7 ADD MLOAD PUSH2 0x31C1 SWAP2 DUP7 SWAP2 PUSH2 0x34BA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x31D6 DUP3 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x31FD DUP5 DUP5 PUSH2 0x160 ADD MLOAD DUP5 DUP7 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x3217 DUP5 DUP5 PUSH2 0x140 ADD MLOAD DUP6 PUSH1 0x0 ADD MLOAD DUP6 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x3231 DUP5 DUP5 PUSH2 0x1A0 ADD MLOAD DUP5 DUP7 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x324F DUP5 DUP5 PUSH2 0x180 ADD MLOAD DUP6 PUSH1 0x0 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3265 DUP6 DUP4 PUSH1 0x80 ADD MLOAD DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x3855 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2598 JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 ADD MSTORE POP POP POP POP POP JUMP JUMPDEST PUSH2 0x140 DUP2 ADD MLOAD PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x180 DUP4 ADD MLOAD PUSH2 0x1A0 DUP5 ADD MLOAD PUSH1 0x0 SWAP4 PUSH32 0xF80322EB8376AAFB64EADF8F0D7623F22130FD9491A221E902B713CB984A7534 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP8 LT ISZERO PUSH2 0x32C6 JUMPI INVALID JUMPDEST PUSH1 0x1F NOT DUP8 ADD DUP1 MLOAD PUSH2 0x140 DUP10 ADD DUP1 MLOAD PUSH2 0x160 DUP12 ADD DUP1 MLOAD PUSH2 0x180 DUP14 ADD DUP1 MLOAD PUSH2 0x1A0 DUP16 ADD DUP1 MLOAD SWAP14 DUP10 MSTORE DUP13 MLOAD PUSH1 0x20 SWAP14 DUP15 ADD KECCAK256 DUP8 MSTORE DUP12 MLOAD SWAP12 DUP14 ADD SWAP12 SWAP1 SWAP12 KECCAK256 DUP5 MSTORE DUP10 MLOAD SWAP10 DUP13 ADD SWAP10 SWAP1 SWAP10 KECCAK256 DUP2 MSTORE DUP8 MLOAD SWAP8 SWAP1 SWAP11 ADD SWAP7 SWAP1 SWAP7 KECCAK256 DUP9 MSTORE PUSH2 0x1E0 DUP6 KECCAK256 SWAP4 SWAP1 SWAP5 MSTORE SWAP1 MSTORE SWAP2 SWAP1 MSTORE SWAP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x7DFCA19 PUSH1 0xE3 SHL SWAP1 PUSH2 0x25EF SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x24 ADD PUSH2 0x527D JUMP JUMPDEST PUSH1 0x60 PUSH4 0x488219A6 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x515C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 ADD DUP4 MLOAD LT ISZERO PUSH2 0x3392 JUMPI PUSH2 0x3392 PUSH2 0x9A7 PUSH1 0x3 DUP6 MLOAD DUP6 PUSH1 0x4 ADD PUSH2 0x343C JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x4678472B PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F05 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xF5985184 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x5223 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xA26DAC09 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F9B JUMP JUMPDEST PUSH1 0x60 PUSH4 0xDEC4AEDF PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4E8F JUMP JUMPDEST PUSH1 0x60 PUSH4 0xE53C76C8 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x51A5 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x28006595 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x51DB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x60 PUSH4 0x1B8388F7 PUSH1 0xE0 SHL DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1EFF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E9D JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFDB6CA8D PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4F39 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xB6555D6F PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4ECA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34C7 DUP5 DUP5 DUP5 PUSH2 0x388D JUMP JUMPDEST ISZERO PUSH2 0x34DA JUMPI PUSH2 0x34DA PUSH2 0x9A7 DUP6 DUP6 DUP6 PUSH2 0x38F3 JUMP JUMPDEST PUSH2 0xA74 DUP4 PUSH2 0x1E60 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST PUSH2 0x34F6 PUSH2 0x3BF4 JUMP JUMPDEST DUP2 DUP6 GT DUP5 DUP5 GT DUP5 DUP7 GT ISZERO PUSH2 0x3516 JUMPI PUSH2 0x350F DUP10 DUP7 DUP7 PUSH2 0x3912 JUMP JUMPDEST SWAP3 POP PUSH2 0x3565 JUMP JUMPDEST DUP7 DUP5 GT ISZERO PUSH2 0x3556 JUMPI DUP3 MLOAD DUP8 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x20 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD PUSH2 0x3540 SWAP2 SWAP1 DUP10 PUSH2 0x34BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP6 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 MLOAD ADD DUP8 SWAP1 MSTORE PUSH2 0x3565 JUMP JUMPDEST PUSH2 0x3562 DUP8 DUP8 DUP8 DUP8 PUSH2 0x394F JUMP JUMPDEST SWAP3 POP JUMPDEST DUP2 ISZERO PUSH2 0x358B JUMPI PUSH1 0x20 DUP1 DUP5 ADD MLOAD ADD MLOAD DUP4 MLOAD MLOAD PUSH2 0x3585 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE JUMPDEST DUP1 ISZERO PUSH2 0x35B3 JUMPI DUP3 MLOAD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD SWAP1 DUP5 ADD MLOAD MLOAD PUSH2 0x35AD SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MSTORE JUMPDEST POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x35C8 PUSH2 0x3BF4 JUMP JUMPDEST DUP3 DUP5 GT ISZERO PUSH2 0x35E2 JUMPI PUSH2 0x35DB DUP8 DUP5 DUP5 PUSH2 0x3912 JUMP JUMPDEST SWAP1 POP PUSH2 0x3630 JUMP JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0x3621 JUMPI DUP1 MLOAD DUP6 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 ADD MLOAD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH2 0x3614 SWAP2 SWAP1 DUP7 PUSH2 0x397A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD ADD MSTORE PUSH2 0x3630 JUMP JUMPDEST PUSH2 0x362D DUP6 DUP6 DUP6 DUP6 PUSH2 0x394F JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD ADD MLOAD DUP2 MLOAD MLOAD PUSH2 0x364A SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x369E JUMPI SELFBALANCE PUSH1 0x0 PUSH2 0x367F DUP11 DUP5 DUP5 DUP12 DUP12 DUP11 PUSH2 0x39B2 JUMP JUMPDEST SWAP1 POP PUSH2 0x3691 DUP10 DUP5 DUP4 DUP6 SUB DUP12 DUP11 DUP11 PUSH2 0x39B2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0x35B6 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x35B6 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0x8E6 JUMPI POP POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 KECCAK256 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0x36EE JUMPI PUSH2 0x36EE PUSH2 0x9A7 PUSH1 0x4 DUP6 MLOAD DUP6 PUSH1 0x14 ADD PUSH2 0x343C JUMP JUMPDEST POP ADD PUSH1 0x14 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xA15C0D06 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4DC6 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3734 DUP5 DUP5 DUP4 SUB PUSH4 0xFFFFFFFF PUSH2 0x345B AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x20C13B0B PUSH1 0xE0 SHL SWAP1 PUSH2 0x3753 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x5045 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP PUSH2 0x3797 DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x345B AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x37B3 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x37EE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x37F3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3806 JUMPI POP DUP1 MLOAD PUSH1 0x20 EQ JUMPDEST ISZERO PUSH2 0x383A JUMPI PUSH4 0x20C13B0B PUSH1 0xE0 SHL PUSH2 0x3824 DUP3 PUSH1 0x0 PUSH4 0xFFFFFFFF PUSH2 0x3371 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ SWAP5 POP POP POP POP POP PUSH2 0xA74 JUMP JUMPDEST PUSH2 0x3849 PUSH2 0x9A7 DUP11 DUP11 DUP11 DUP6 PUSH2 0x3A9A JUMP JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x3883 JUMPI PUSH2 0x3878 DUP7 DUP3 SELFBALANCE DUP9 DUP9 DUP9 PUSH2 0x39B2 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP POP PUSH2 0xA74 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xA74 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x389F JUMPI PUSH2 0x389F PUSH2 0x9A7 PUSH2 0x3ABB JUMP JUMPDEST DUP2 ISZERO DUP1 PUSH2 0x38AA JUMPI POP DUP4 ISZERO JUMPDEST ISZERO PUSH2 0x38B7 JUMPI POP PUSH1 0x0 PUSH2 0x8E6 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP1 PUSH2 0x38C1 JUMPI INVALID JUMPDEST DUP6 DUP5 MULMOD SWAP1 POP PUSH2 0x38D6 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST PUSH2 0x38E8 DUP3 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST LT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH4 0x339F3DE2 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F9B JUMP JUMPDEST PUSH2 0x391A PUSH2 0x3BF4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD DUP6 SWAP1 MSTORE MLOAD DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH2 0x3945 SWAP2 SWAP1 DUP6 PUSH2 0x34BA JUMP JUMPDEST DUP2 MLOAD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3957 PUSH2 0x3BF4 JUMP JUMPDEST DUP1 MLOAD SWAP5 SWAP1 SWAP5 MSTORE DUP4 MLOAD PUSH1 0x20 SWAP1 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP5 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 MLOAD SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 DUP5 PUSH2 0x3AD9 JUMP JUMPDEST ISZERO PUSH2 0x399A JUMPI PUSH2 0x399A PUSH2 0x9A7 DUP6 DUP6 DUP6 PUSH2 0x38F3 JUMP JUMPDEST PUSH2 0xA74 DUP4 PUSH2 0x1E60 PUSH2 0x1E44 DUP3 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 LT PUSH2 0x39BE JUMPI POP DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0xA3B4A327 PUSH1 0xE0 SHL SWAP1 PUSH2 0x39DF SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP10 SWAP1 PUSH1 0x24 ADD PUSH2 0x4DE1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x3A31 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3A6E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A73 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3A8D JUMPI PUSH2 0x3A8D PUSH2 0x9A7 DUP12 DUP10 DUP10 DUP10 DUP7 PUSH2 0x3B3D JUMP JUMPDEST POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH4 0x5BD0428D PUSH1 0xE0 SHL DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1EFF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x29E460DF PUSH1 0xE2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3AEB JUMPI PUSH2 0x3AEB PUSH2 0x9A7 PUSH2 0x3ABB JUMP JUMPDEST DUP2 ISZERO DUP1 PUSH2 0x3AF6 JUMPI POP DUP4 ISZERO JUMPDEST ISZERO PUSH2 0x3B03 JUMPI POP PUSH1 0x0 PUSH2 0x8E6 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP1 PUSH2 0x3B0D JUMPI INVALID JUMPDEST DUP6 DUP5 MULMOD SWAP1 POP DUP4 PUSH2 0x3B23 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST DUP2 PUSH2 0x3B2A JUMPI INVALID JUMPDEST MOD SWAP1 POP PUSH2 0x38D6 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST PUSH1 0x60 PUSH4 0x87CB1E75 PUSH1 0xE0 SHL DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3B60 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3C07 PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3C14 PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1C0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x775 DUP2 PUSH2 0x5473 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3CF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3D0C PUSH2 0x3D07 DUP3 PUSH2 0x52F4 JUMP JUMPDEST PUSH2 0x52CE JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x3D31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D5D JUMPI DUP2 PUSH2 0x3D47 DUP9 DUP3 PUSH2 0x3CDD JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3D34 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3D78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3D86 PUSH2 0x3D07 DUP3 PUSH2 0x52F4 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D5D JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x3DAE DUP9 DUP3 PUSH2 0x3F1A JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3D98 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3DD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3DE3 PUSH2 0x3D07 DUP3 PUSH2 0x52F4 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D5D JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x3E0B DUP9 DUP3 PUSH2 0x3FEC JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3DF5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3E40 PUSH2 0x3D07 DUP3 PUSH2 0x52F4 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D5D JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x3E68 DUP9 DUP3 PUSH2 0x418D JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3E52 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3E9D PUSH2 0x3D07 DUP3 PUSH2 0x52F4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x3EC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D5D JUMPI DUP2 PUSH2 0x3ED8 DUP9 DUP3 PUSH2 0x3EF9 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3EC5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x775 DUP2 PUSH2 0x5487 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x775 DUP2 PUSH2 0x5490 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x775 DUP2 PUSH2 0x5499 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x775 DUP2 PUSH2 0x5499 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3F2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3F39 PUSH2 0x3D07 DUP3 PUSH2 0x5314 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x3F55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F60 DUP4 DUP3 DUP5 PUSH2 0x53FF JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F85 PUSH1 0xA0 PUSH2 0x52CE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F93 DUP5 DUP5 PUSH2 0x421B JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x3FA4 DUP5 DUP5 DUP4 ADD PUSH2 0x421B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x3FB8 DUP5 DUP3 DUP6 ADD PUSH2 0x421B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x3FCC DUP5 DUP3 DUP6 ADD PUSH2 0x421B JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x3FE0 DUP5 DUP3 DUP6 ADD PUSH2 0x421B JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x400A PUSH2 0x1C0 PUSH2 0x52CE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4018 DUP5 DUP5 PUSH2 0x3CDD JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x4029 DUP5 DUP5 DUP4 ADD PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x403D DUP5 DUP3 DUP6 ADD PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x4051 DUP5 DUP3 DUP6 ADD PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x4065 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x4079 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x408D DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x40A1 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x40B6 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x40CC DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x40ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x40F9 DUP5 DUP3 DUP6 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x411A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4126 DUP5 DUP3 DUP6 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP PUSH2 0x180 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4153 DUP5 DUP3 DUP6 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH2 0x180 DUP4 ADD MSTORE POP PUSH2 0x1A0 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4180 DUP5 DUP3 DUP6 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH2 0x1A0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x419F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41A9 PUSH1 0xA0 PUSH2 0x52CE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x41B7 DUP5 DUP5 PUSH2 0x3EF9 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x41C8 DUP5 DUP5 DUP4 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x41DC DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x41F0 DUP5 DUP3 DUP6 ADD PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x420F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FE0 DUP5 DUP3 DUP6 ADD PUSH2 0x3F1A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x775 DUP2 PUSH2 0x5490 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP5 DUP5 PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4263 DUP6 DUP6 PUSH2 0x3CDD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4274 DUP6 DUP3 DUP7 ADD PUSH2 0x3CDD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x429D DUP6 DUP6 PUSH2 0x3CDD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4274 DUP6 DUP3 DUP7 ADD PUSH2 0x3EEE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x42C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x42E6 DUP8 DUP3 DUP9 ADD PUSH2 0x3D67 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x430E DUP8 DUP3 DUP9 ADD PUSH2 0x3CE8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x432A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4336 DUP8 DUP3 DUP9 ADD PUSH2 0x3CE8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x435E DUP8 DUP3 DUP9 ADD PUSH2 0x3E7E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x437C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA74 DUP5 DUP3 DUP6 ADD PUSH2 0x3DC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x43B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x43CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43D6 DUP8 DUP3 DUP9 ADD PUSH2 0x3DC4 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x43F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43FE DUP8 DUP3 DUP9 ADD PUSH2 0x3DC4 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x441A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4426 DUP8 DUP3 DUP9 ADD PUSH2 0x3D67 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x435E DUP8 DUP3 DUP9 ADD PUSH2 0x3D67 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4485 DUP7 DUP3 DUP8 ADD PUSH2 0x3DC4 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44AD DUP7 DUP3 DUP8 ADD PUSH2 0x3E7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44D5 DUP7 DUP3 DUP8 ADD PUSH2 0x3D67 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x44F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x450A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4516 DUP7 DUP3 DUP8 ADD PUSH2 0x3DC4 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x44AD DUP7 DUP3 DUP8 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x453A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x455C DUP6 DUP3 DUP7 ADD PUSH2 0x3E21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4274 DUP6 DUP3 DUP7 ADD PUSH2 0x3D67 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP5 DUP5 PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4263 DUP6 DUP6 PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x45E2 DUP7 DUP7 PUSH2 0x3EF9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x45F3 DUP7 DUP3 DUP8 ADD PUSH2 0x3CDD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x460F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44D5 DUP7 DUP3 DUP8 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x462D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP5 DUP5 PUSH2 0x3F04 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x464B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP5 DUP5 PUSH2 0x3F0F JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP5 DUP5 PUSH2 0x3F69 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x469D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA74 DUP5 DUP3 DUP6 ADD PUSH2 0x3FEC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46DE DUP6 DUP3 DUP7 ADD PUSH2 0x3FEC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4274 DUP6 DUP3 DUP7 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x471C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x473E DUP8 DUP3 DUP9 ADD PUSH2 0x3FEC JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x475A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4766 DUP8 DUP3 DUP9 ADD PUSH2 0x3FEC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4782 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x478E DUP8 DUP3 DUP9 ADD PUSH2 0x3F1A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x435E DUP8 DUP3 DUP9 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x47CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47ED DUP7 DUP3 DUP8 ADD PUSH2 0x3FEC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x45F3 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4811 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46DE DUP6 DUP3 DUP7 ADD PUSH2 0x418D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E6 DUP4 DUP4 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x484B DUP4 DUP4 PUSH2 0x4B0B JUMP JUMPDEST POP POP PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53B2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x534E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4876 DUP3 PUSH2 0x5341 JUMP JUMPDEST PUSH2 0x4880 DUP2 DUP6 PUSH2 0x5345 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x4892 DUP6 PUSH2 0x533B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x48CC JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x48AF DUP6 DUP3 PUSH2 0x4833 JUMP JUMPDEST SWAP5 POP PUSH2 0x48BA DUP4 PUSH2 0x533B JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4896 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48E4 DUP3 PUSH2 0x5341 JUMP JUMPDEST PUSH2 0x48EE DUP2 DUP6 PUSH2 0x5345 JUMP JUMPDEST SWAP4 POP PUSH2 0x48F9 DUP4 PUSH2 0x533B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4927 JUMPI DUP2 MLOAD PUSH2 0x4911 DUP9 DUP3 PUSH2 0x483F JUMP JUMPDEST SWAP8 POP PUSH2 0x491C DUP4 PUSH2 0x533B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x48FD JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x493D DUP3 PUSH2 0x5341 JUMP JUMPDEST PUSH2 0x4947 DUP2 DUP6 PUSH2 0x5345 JUMP JUMPDEST SWAP4 POP PUSH2 0x4952 DUP4 PUSH2 0x533B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4927 JUMPI DUP2 MLOAD PUSH2 0x496A DUP9 DUP3 PUSH2 0x483F JUMP JUMPDEST SWAP8 POP PUSH2 0x4975 DUP4 PUSH2 0x533B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4956 JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x5359 JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x535E JUMP JUMPDEST PUSH2 0x485C PUSH2 0x499E DUP3 PUSH2 0x535E JUMP JUMPDEST PUSH2 0x535E JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x5361 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49B7 DUP3 PUSH2 0x5341 JUMP JUMPDEST PUSH2 0x49C1 DUP2 DUP6 PUSH2 0x5345 JUMP JUMPDEST SWAP4 POP PUSH2 0x49D1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x540B JUMP JUMPDEST PUSH2 0x49DA DUP2 PUSH2 0x5437 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49EF DUP3 PUSH2 0x5341 JUMP JUMPDEST PUSH2 0x49F9 DUP2 DUP6 PUSH2 0xA3F JUMP JUMPDEST SWAP4 POP PUSH2 0x4A09 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x540B JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53BD JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53C8 JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53D3 JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53DE JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A4D PUSH1 0x1C DUP4 PUSH2 0xA3F JUMP JUMPDEST PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE PUSH1 0x1C ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A86 PUSH1 0x14 DUP4 PUSH2 0x5345 JUMP JUMPDEST PUSH20 0x1514905394D1915494D7D4D550D0D154D4D19553 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x4AC1 DUP3 DUP3 PUSH2 0x4932 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x4ADB DUP3 DUP3 PUSH2 0x4932 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x4AF0 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4B03 PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xA0 DUP4 ADD SWAP1 PUSH2 0x4B1C DUP5 DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x4B2F PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4B42 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4B55 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2C14 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x180 DUP4 ADD SWAP1 PUSH2 0x4B7A DUP5 DUP3 PUSH2 0x4B0B JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x4B8D PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4B0B JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4BA1 PUSH2 0x140 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2C14 PUSH2 0x160 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x4BC6 DUP5 DUP3 PUSH2 0x4A37 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x4BD9 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2C14 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1C0 DUP5 ADD SWAP1 PUSH2 0x4C01 DUP6 DUP3 PUSH2 0x4862 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x4C14 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x4862 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x4C27 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x4862 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4C3A PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x4862 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x4C4D PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x4C60 PUSH1 0xA0 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0x4C73 PUSH1 0xC0 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0xE0 DUP4 ADD MLOAD PUSH2 0x4C86 PUSH1 0xE0 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH2 0x100 DUP4 ADD MLOAD PUSH2 0x4C9B PUSH2 0x100 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH2 0x120 DUP4 ADD MLOAD PUSH2 0x4CB0 PUSH2 0x120 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH2 0x140 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x140 DUP7 ADD MSTORE PUSH2 0x4CCA DUP3 DUP3 PUSH2 0x49AC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x160 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x160 DUP7 ADD MSTORE PUSH2 0x4CE6 DUP3 DUP3 PUSH2 0x49AC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x180 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x180 DUP7 ADD MSTORE PUSH2 0x4D02 DUP3 DUP3 PUSH2 0x49AC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1A0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x1A0 DUP7 ADD MSTORE PUSH2 0xCF8 DUP3 DUP3 PUSH2 0x49AC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH1 0xA0 DUP5 ADD SWAP1 PUSH2 0x4D32 DUP6 DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x4D45 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x4D58 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4D6B PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x4862 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0xCF8 DUP3 DUP3 PUSH2 0x49AC JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E6 DUP3 DUP5 PUSH2 0x49E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DA3 DUP3 PUSH2 0x4A40 JUMP JUMPDEST SWAP2 POP PUSH2 0x4DAF DUP3 DUP5 PUSH2 0x4992 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4862 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4DD4 DUP3 DUP6 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0x8E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4862 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4DEF DUP3 DUP7 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0x4DFC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0xA74 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4E17 DUP3 DUP8 PUSH2 0x4862 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4E29 DUP2 DUP7 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4E3D DUP2 DUP6 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x35B6 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8E6 DUP2 DUP5 PUSH2 0x486B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8E6 DUP2 DUP5 PUSH2 0x48D9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4980 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4DD4 DUP3 DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4EAB DUP3 DUP8 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x4EB8 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4862 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4E3D DUP2 DUP6 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4ED8 DUP3 DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x8E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4EF3 DUP3 DUP6 PUSH2 0x4989 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xA74 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4F13 DUP3 DUP7 PUSH2 0x4989 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4F25 DUP2 DUP6 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xCF8 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4F47 DUP3 DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x8E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4A37 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4F62 DUP3 DUP9 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x4F6F PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x4F7C PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0x4F89 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4862 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x313C DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FA9 DUP3 DUP7 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x4DFC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4FC4 DUP3 DUP8 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x4FD1 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4D83 JUMP JUMPDEST PUSH2 0x4FDE PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0xCF8 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x49A3 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4DD4 DUP3 DUP6 PUSH2 0x49A3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8E6 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5029 DUP2 DUP8 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP PUSH2 0x5038 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0x4FDE PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4862 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5056 DUP2 DUP6 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xA74 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x507B DUP2 DUP7 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x508F DUP2 DUP6 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP PUSH2 0xA74 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x160 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x50B0 DUP2 DUP15 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x50C4 DUP2 DUP14 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x50D8 DUP2 DUP13 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x50EC DUP2 DUP12 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP PUSH2 0x50FB PUSH1 0x80 DUP4 ADD DUP11 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0x5108 PUSH1 0xA0 DUP4 ADD DUP10 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x5115 PUSH1 0xC0 DUP4 ADD DUP9 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x5122 PUSH1 0xE0 DUP4 ADD DUP8 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x5130 PUSH2 0x100 DUP4 ADD DUP7 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x513E PUSH2 0x120 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x514C PUSH2 0x140 DUP4 ADD DUP5 PUSH2 0x4989 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x516A DUP3 DUP7 PUSH2 0x4A13 JUMP JUMPDEST PUSH2 0x5177 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xCF8 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FA9 DUP3 DUP7 PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x51B3 DUP3 DUP7 PUSH2 0x4A25 JUMP JUMPDEST PUSH2 0x51C0 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0xA74 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4862 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FA9 DUP3 DUP7 PUSH2 0x4A25 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FA9 DUP3 DUP7 PUSH2 0x4A2E JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x51F7 DUP3 DUP8 PUSH2 0x4A37 JUMP JUMPDEST PUSH2 0x5204 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x5211 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4862 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x35B6 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4ED8 DUP3 DUP6 PUSH2 0x4A13 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x775 DUP2 PUSH2 0x4A79 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8E6 DUP2 DUP5 PUSH2 0x4AA9 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4B0B JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4B68 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4BB5 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x528E DUP2 DUP6 PUSH2 0x4BEC JUMP JUMPDEST SWAP1 POP PUSH2 0x8E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52AE DUP2 DUP7 PUSH2 0x4BEC JUMP JUMPDEST SWAP1 POP PUSH2 0x5177 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x528E DUP2 DUP6 PUSH2 0x4D1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x52EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x530A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x532A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x53A0 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xA3F DUP2 PUSH2 0x5441 JUMP JUMPDEST DUP1 PUSH2 0xA3F DUP2 PUSH2 0x544B JUMP JUMPDEST DUP1 PUSH2 0xA3F DUP2 PUSH2 0x5455 JUMP JUMPDEST DUP1 PUSH2 0xA3F DUP2 PUSH2 0x545F JUMP JUMPDEST DUP1 PUSH2 0xA3F DUP2 PUSH2 0x5469 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x53F4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x536E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x5378 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x5382 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x538C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x5396 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x534E JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5426 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x540E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2C14 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x7C3 JUMPI INVALID JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x7C3 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x7C3 JUMPI INVALID JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x7C3 JUMPI INVALID JUMPDEST PUSH1 0x7 DUP2 LT PUSH2 0x7C3 JUMPI INVALID JUMPDEST PUSH2 0x547C DUP2 PUSH2 0x534E JUMP JUMPDEST DUP2 EQ PUSH2 0x7C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x547C DUP2 PUSH2 0x5359 JUMP JUMPDEST PUSH2 0x547C DUP2 PUSH2 0x535E JUMP JUMPDEST PUSH2 0x547C DUP2 PUSH2 0x5361 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x20 SWAP5 DUP6 ADD KECCAK256 DUP4 MLOAD SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 MSTORE SWAP6 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP1 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 DUP8 0xE0 POP PUSH18 0xFAFB91608A204FCA02A84264FC88BE64E369 0x28 0xC8 BLOCKHASH SELFBALANCE 0xB7 0xDD COINBASE CALL 0xF EQ PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV LT STOP BLOCKHASH ", "sourceMap": "1057:384:25:-;;;767:5:22;744:28;;-1:-1:-1;;;;744:28:22;;;1335:104:25;5:2:-1;;;;30:1;27;20:12;5:2;1335:104:25;;;;;;;;;;;;;;;;;;;;;1429:1;898:18:21;;-1:-1:-1;;;;;;898:18:21;906:10;898:18;;;1412:7:25;;1429:1;1569:4:2;1477:132;;1649:182;1689:28;;;;;;;;;;;;;-1:-1:-1;;;1689:28:2;;;1731:31;;;;;;;;;;;;;-1:-1:-1;;;1731:31:2;;;1776:7;1797:24;1649:26;;;;;:182;;:::i;:::-;1619:27;:212;-1:-1:-1;1057:384:25;;-1:-1:-1;;;1057:384:25;1285:1263:15;1997:11;;1992:2;1982:13;;;1972:37;2069:14;;2051:16;;;2041:43;;;;2158:2;2152:9;;962:66;2213:26;;2259:15;;;2252:33;;;;2305:15;;;2298:36;;;;2366:2;2354:15;;2347:32;2411:3;2399:16;;2392:43;2505:3;2487:22;;;1285:1263::o;5:134:-1:-;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:263;;261:2;249:9;240:7;236:23;232:32;229:2;;;277:1;274;267:12;229:2;312:1;329:64;385:7;365:9;329:64;;;319:74;223:186;-1:-1;;;;223:186;416:72;478:5;461:27;495:117;564:24;582:5;564:24;;;557:5;554:35;544:2;;603:1;600;593:12;544:2;538:74;;;1057:384:25;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "60806040526004361061025c5760003560e01c80638d45cd2311610144578063beee2e14116100b6578063dd885e2d1161007a578063dd885e2d1461066d578063dedfc1f11461068f578063e14b58c4146106a2578063eea086ba146106b5578063f2fde38b146106ca578063fc74896d146106ea5761025c565b8063beee2e14146105e5578063c0fa16cc146105f8578063c26cfecd14610618578063c585bb931461062d578063d9bfa73e1461064d5761025c565b80639b44d556116101085780639b44d5561461053f5780639d3fa4b914610552578063a12dcc6f1461057f578063a6c3bf331461059f578063b04fbddd146105b2578063b718e292146105d25761025c565b80638d45cd23146104b75780638da5cb5b146104d75780638ea8dfe4146104ec5780639331c7421461050c5780639694a4021461052c5761025c565b806360704108116101dd5780637b8e3514116101a15780637b8e35141461040f5780638171c4071461042f57806382c174d01461044f578063850a15011461046f57806388ec79fb146104845780638bc8efb3146104a45761025c565b806360704108146103895780636a1a80fd146103b65780636fcf3e9e146103d657806377fcce68146103e957806378d29ac1146103fc5761025c565b80632ac12622116102245780632ac12622146103105780632da6298714610330578063369da0991461034357806346c02d7a146103635780634f9559b1146103765761025c565b80630228e168146102615780630efca185146102975780631ce4c78b146102ae5780632280c910146102d0578063288cdc91146102f0575b600080fd5b34801561026d57600080fd5b5061028161027c366004614584565b61070a565b60405161028e9190614e73565b60405180910390f35b3480156102a357600080fd5b506102ac61071f565b005b3480156102ba57600080fd5b506102c3610733565b60405161028e9190614e81565b6102e36102de3660046147fe565b610739565b60405161028e9190615007565b3480156102fc57600080fd5b506102c361030b366004614584565b61077b565b34801561031c57600080fd5b5061028161032b366004614584565b61078d565b6102ac61033e366004614675565b6107a2565b6103566103513660046144df565b6107c6565b60405161028e9190615252565b6102ac610371366004614584565b6108ed565b6102ac610384366004614584565b610935565b34801561039557600080fd5b506103a96103a436600461461b565b610a1b565b60405161028e9190614db8565b6103c96103c436600461439e565b610a44565b60405161028e9190615241565b6103c96103e436600461439e565b610a7c565b6102ac6103f736600461427e565b610a9a565b61035661040a3660046144df565b610b32565b34801561041b57600080fd5b5061028161042a366004614244565b610c82565b34801561043b57600080fd5b5061028161044a3660046145c1565b610ca2565b34801561045b57600080fd5b5061028161046a3660046145a2565b610d01565b34801561047b57600080fd5b506103a9610d21565b610497610492366004614706565b610d30565b60405161028e9190615260565b6103566104b23660046144df565b610d4e565b3480156104c357600080fd5b506102816104d23660046147fe565b610d82565b3480156104e357600080fd5b506103a9610da7565b6104ff6104fa36600461444e565b610db6565b60405161028e9190614e62565b34801561051857600080fd5b506102ac610527366004614584565b610ee1565b6104ff61053a36600461444e565b610f29565b61035661054d3660046147b6565b610ff0565b34801561055e57600080fd5b5061057261056d366004614675565b611015565b60405161028e919061526f565b34801561058b57600080fd5b5061028161059a3660046146a9565b6110fd565b6103566105ad3660046144df565b611122565b3480156105be57600080fd5b506102ac6105cd3660046142ae565b611156565b6104976105e0366004614706565b6111e8565b6104ff6105f336600461444e565b611206565b34801561060457600080fd5b506102ac610613366004614226565b6112bb565b34801561062457600080fd5b506102c36112cc565b34801561063957600080fd5b506102ac610648366004614226565b6112d2565b34801561065957600080fd5b506102c3610668366004614244565b6113f7565b34801561067957600080fd5b50610682611414565b60405161028e9190614feb565b6102ac61069d36600461436a565b61141f565b6103566106b03660046147b6565b611461565b3480156106c157600080fd5b506103a961147c565b3480156106d657600080fd5b506102ac6106e5366004614226565b61148b565b6106fd6106f8366004614527565b6114fc565b60405161028e9190614e51565b60056020526000908152604090205460ff1681565b610727611625565b6107316000611652565b565b60035481565b60606107436116bb565b156107595761075283836116cb565b9050610775565b6107616117c7565b61076b83836116cb565b90506107756117dc565b92915050565b60096020526000908152604090205481565b600a6020526000908152604090205460ff1681565b6107aa6117f1565b6107b381611823565b6107bb611868565b6107c361187c565b50565b6107ce613b9d565b6107d66116bb565b1561086c57835160005b81811461086557600061080084602001518761188b90919063ffffffff16565b905061080a613b9d565b61083b88848151811061081957fe5b60200260200101518388868151811061082e57fe5b60200260200101516118aa565b9050610847858261199b565b94508685602001511061085b575050610865565b50506001016107e0565b50506108e6565b6108746117c7565b835160005b8181146108dc57600061089984602001518761188b90919063ffffffff16565b90506108a3613b9d565b6108b288848151811061081957fe5b90506108be858261199b565b9450868560200151106108d25750506108dc565b5050600101610879565b50506108e66117dc565b9392505050565b6108f56117f1565b60006108ff611a36565b60008381526007602090815260408083206001600160a01b03909416835292905220805460ff19166001179055506107bb611868565b61093d6117f1565b6000610947611a36565b905060006001600160a01b03821633146109615733610964565b60005b6001600160a01b038084166000908152600b602090815260408083209385168352929052205490915060018401908082116109ac576109ac6109a7858584611a5b565b611ab5565b6001600160a01b038085166000818152600b602090815260408083209488168084529490915290819020859055517f82af639571738f4ebd4268fb0363d8957ebe1bbb9e78dba5ebd69eed39b154f090610a07908690614e81565b60405180910390a3505050506107bb611868565b6001600160e01b031981166000908152600260205260409020546001600160a01b03165b919050565b610a4c613bcc565b610a546117f1565b610a62858585856001611abd565b9050610a6c611868565b610a7461187c565b949350505050565b610a84613bcc565b610a8c6117f1565b610a62858585856000611abd565b610aa26117f1565b6000610aac611a36565b6001600160a01b0381811660008181526008602090815260408083209489168084529490915290819020805460ff19168715151790555192935090917fa8656e308026eeabce8f0bc18048433252318ab80ac79da0b3d3d8697dfba89190610b15908690614e73565b60405180910390a350610b26611868565b610b2e61187c565b5050565b610b3a613b9d565b610b426116bb565b15610c0057835160005b818114610865578251600090610b6990879063ffffffff61188b16565b90506000610ba6888481518110610b7c57fe5b602002602001015160a00151898581518110610b9457fe5b60200260200101516080015184611e2a565b9050610bb0613b9d565b610bd4898581518110610bbf57fe5b60200260200101518389878151811061082e57fe5b9050610be0868261199b565b955087866000015110610bf557505050610865565b505050600101610b4c565b610c086117c7565b835160005b8181146108dc578251600090610c2a90879063ffffffff61188b16565b90506000610c3d888481518110610b7c57fe5b9050610c47613b9d565b610c56898581518110610bbf57fe5b9050610c62868261199b565b955087866000015110610c77575050506108dc565b505050600101610c0d565b600860209081526000928352604080842090915290825290205460ff1681565b600080610cb0858585611e6c565b90506005816008811115610cc057fe5b1480610cd757506007816008811115610cd557fe5b145b15610cec57610cec6109a76005878787611ede565b610cf881868686611f3b565b95945050505050565b600760209081526000928352604080842090915290825290205460ff1681565b6004546001600160a01b031681565b610d38613bf4565b610d406117f1565b610a62858585856000612173565b610d56613b9d565b610d61848484610b32565b905082816000015110156108e6576108e66109a76000858460000151612260565b600080610d9a6001548561227f90919063ffffffff16565b9050610a74848285612293565b6000546001600160a01b031681565b6060610dc06116bb565b15610e63578351604080518281526020808402820101909152818015610e0057816020015b610ded613b9d565b815260200190600190039081610de55790505b50915060005b81811461086557610e44868281518110610e1c57fe5b6020026020010151868381518110610e3057fe5b602002602001015186848151811061082e57fe5b838281518110610e5057fe5b6020908102919091010152600101610e06565b610e6b6117c7565b8351604080518281526020808402820101909152818015610ea657816020015b610e93613b9d565b815260200190600190039081610e8b5790505b50915060005b8181146108dc57610ec2868281518110610e1c57fe5b838281518110610ece57fe5b6020908102919091010152600101610eac565b610ee9611625565b7f3a3e76d7a75e198aef1f53137e4f2a8a2ec74e2e9526db8404d08ccc9f1e621d60035482604051610f1c929190614eca565b60405180910390a1600355565b6060610f336117f1565b8351604080518281526020808402820101909152818015610f6e57816020015b610f5b613b9d565b815260200190600190039081610f535790505b50915060005b818114610fde57610fbf868281518110610f8a57fe5b6020026020010151868381518110610f9e57fe5b6020026020010151868481518110610fb257fe5b6020026020010151612319565b838281518110610fcb57fe5b6020908102919091010152600101610f74565b5050610fe8611868565b6108e661187c565b610ff8613b9d565b6110006117f1565b61100b848484612319565b9050610fe8611868565b61101d613c28565b611026826123bb565b604083015260208201526080820151611052578060015b9081600681111561104a57fe5b905250610a3f565b60a08201516110635780600261103d565b8160a0015181604001511061107a5780600561103d565b816101000151421061108e5780600461103d565b6020808201516000908152600a909152604090205460ff16156110b35780600661103d565b61012082015182516001600160a01b039081166000908152600b6020908152604080832060608801519094168352929052205411156110f45780600661103d565b60038152919050565b600080611115600154856123ec90919063ffffffff16565b9050610a748482856123fb565b61112a613b9d565b6111358484846107c6565b905082816020015110156108e6576108e66109a76001858460200151612260565b835160005b8181146111c6576111be8160001b87838151811061117557fe5b602002602001015187848151811061118957fe5b602002602001015187858151811061119d57fe5b60200260200101518786815181106111b157fe5b6020026020010151612450565b60010161115b565b5060405162461bcd60e51b81526004016111df90615231565b60405180910390fd5b6111f0613bf4565b6111f86117f1565b610a62858585856001612173565b60606112106117f1565b835160408051828152602080840282010190915281801561124b57816020015b611238613b9d565b8152602001906001900390816112305790505b50915060005b818114610fde5761129c86828151811061126757fe5b602002602001015186838151811061127b57fe5b602002602001015186848151811061128f57fe5b602002602001015161259f565b8382815181106112a857fe5b6020908102919091010152600101611251565b6112c3611625565b6107c381611652565b60015481565b6112da611625565b6000816001600160a01b031663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561131557600080fd5b505afa158015611329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061134d9190810190614639565b6001600160e01b031981166000908152600260205260409020549091506001600160a01b03168015611386576113866109a783836125d2565b6001600160e01b031982166000908152600260205260409081902080546001600160a01b0319166001600160a01b038616179055517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c03194906113ea9084908690614ff9565b60405180910390a1505050565b600b60209081526000928352604080842090915290825290205481565b6320c13b0b60e01b81565b6114276117f1565b805160005b8181146114575761144f83828151811061144257fe5b6020026020010151611823565b60010161142c565b50506107bb611868565b611469613b9d565b6114716117f1565b61100b84848461259f565b6006546001600160a01b031681565b611493611625565b6001600160a01b0381166114b1576114ac6109a7612629565b6107c3565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60606115066116bb565b156115a357825160408051828152602080840282010190915281801561154057816020015b606081526020019060019003908161152b5790505b50915060005b81811461159c5761157d85828151811061155c57fe5b602002602001015185838151811061157057fe5b60200260200101516116cb565b83828151811061158957fe5b6020908102919091010152600101611546565b5050610775565b6115ab6117c7565b82516040805182815260208084028201019091528180156115e057816020015b60608152602001906001900390816115cb5790505b50915060005b81811461161b576115fc85828151811061155c57fe5b83828151811061160857fe5b60209081029190910101526001016115e6565b50506107756117dc565b6000546001600160a01b0316331461073157600054610731906109a79033906001600160a01b0316612647565b6004546040517fe1a5430ebec577336427f40f15822f1f36c5e3509ff209d6db9e6c9e6941cb0b91611691916001600160a01b03909116908490614dc6565b60405180910390a1600480546001600160a01b0319166001600160a01b0392909216919091179055565b600054600160a81b900460ff1690565b606060006116e46001548561227f90919063ffffffff16565b90506116f1848483612664565b6060840151611700818061271e565b600082815260056020526040808220805460ff191660011790556080870151905160609130916117309190614d8c565b600060405180830381855af49150503d806000811461176b576040519150601f19603f3d011682016040523d82523d6000602084013e611770565b606091505b509150915081611787576117876109a7858361274f565b61179283600061271e565b60405184907fa4a7329f1dd821363067e07d359e347b4af9b1efe4b6cccf13240228af3c800d90600090a29695505050505050565b6000805460ff60a81b1916600160a81b179055565b6000805460ff60a81b1916905561073161276c565b600054600160a01b900460ff161561180e5761180e6109a76127a0565b6000805460ff60a01b1916600160a01b179055565b61182b613c28565b61183482611015565b905061184082826127be565b60038151600681111561184f57fe5b1461185a57506107c3565b610b2e828260200151612839565b6118706116bb565b6107315761073161276c565b6000805460ff60a01b19169055565b6000828211156118a4576118a46109a7600285856128b7565b50900390565b6118b2613b9d565b604051606090634da26aab60e11b906118d39087908790879060240161529d565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060306001600160a01b0316836040516119249190614d8c565b600060405180830381855af49150503d806000811461195f576040519150601f19603f3d011682016040523d82523d6000602084013e611964565b606091505b5091509150811561199157805160a01461197a57fe5b8080602001905161198e9190810190614657565b93505b5050509392505050565b6119a3613b9d565b815183516119b69163ffffffff6128d616565b8152602080830151908401516119d19163ffffffff6128d616565b6020820152604080830151908401516119ef9163ffffffff6128d616565b604082015260608083015190840151611a0d9163ffffffff6128d616565b606082015260808083015190840151611a2b9163ffffffff6128d616565b608082015292915050565b6006546000906001600160a01b0316818115611a525781611a54565b335b9250505090565b6060634ad3127560e01b848484604051602401611a7a93929190614de1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290509392505050565b805160208201fd5b611ac5613bcc565b8551611ad857611ad86109a760006128f2565b8451611aeb57611aeb6109a760016128f2565b8351865114611b0157611b016109a760026128f2565b8251855114611b1757611b176109a760036128f2565b8551604051908082528060200260200182016040528015611b5257816020015b611b3f613b9d565b815260200190600190039081611b375790505b5081528451604080518281526020808402820101909152908015611b9057816020015b611b7d613b9d565b815260200190600190039081611b755790505b506020820152600080611ba1613c4a565b88600081518110611bae57fe5b60200260200101519050611bc0613c4a565b88600081518110611bcd57fe5b602002602001015190506000611be2836123bb565b9150506000611bf0836123bb565b915050611bfb613b9d565b611c03613b9d565b611c0b613bf4565b611c3e87878f8c81518110611c1c57fe5b60200260200101518f8c81518110611c3057fe5b60200260200101518f612173565b805160200151909150611c5890869063ffffffff6128d616565b9450611c75816020015160200151856128d690919063ffffffff16565b9350611c8583826000015161199b565b9250611c9582826020015161199b565b9150611cb281604001518b604001516128d690919063ffffffff16565b60408b0152606080820151908b0151611cd09163ffffffff6128d616565b60608b015260a08701518510611d7b578951805160018b019a8592918110611cf457fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525092508e51891415611d5857818a602001518981518110611d4757fe5b602002602001018190525050611e19565b8e8981518110611d6457fe5b60200260200101519650611d77876123bb565b9550505b8560a001518410611e1357818a6020015189806001019a5081518110611d9d57fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525091508d51881415611df057828a600001518a81518110611d4757fe5b8d8881518110611dfc57fe5b60200260200101519550611e0f866123bb565b9450505b50611c03565b505050505050505095945050505050565b6000610a7483611e60611e4482600163ffffffff61188b16565b611e54888763ffffffff61294616565b9063ffffffff6128d616565b9063ffffffff61297716565b6000611e798484846129a1565b90506001600160a01b038316611e9957611e996109a76006868686611ede565b60088181811115611ea657fe5b60ff1610611ebe57611ebe6109a76003868686611ede565b6000816008811115611ecc57fe5b14156108e6576108e66109a760048686865b6060637e5a231860e01b85858585604051602401611eff94939291906151e9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050949350505050565b60006001856008811115611f4b57fe5b1415611f72578151600114611f6a57611f6a6109a76002868686611ede565b506000610a74565b6002856008811115611f8057fe5b141561204e578151604214611f9f57611f9f6109a76002868686611ede565b600082600081518110611fae57fe5b016020015160f81c90506000611fcb84600163ffffffff6129e016565b90506000611fe085602163ffffffff6129e016565b90506000600188858585604051600081526020016040526040516120079493929190614fb6565b6020604051602081039080840390855afa158015612029573d6000803e3d6000fd5b5050604051601f1901516001600160a01b038981169116149550610a74945050505050565b600385600881111561205c57fe5b141561210957815160421461207b5761207b6109a76002868686611ede565b60008260008151811061208a57fe5b016020015160f81c905060006120a784600163ffffffff6129e016565b905060006120bc85602163ffffffff6129e016565b905060006001886040516020016120d39190614d98565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516120079493929190614fb6565b600485600881111561211757fe5b141561212f57612128848484612a0a565b9050610a74565b600685600881111561213d57fe5b1461214457fe5b5060008381526007602090815260408083206001600160a01b038616845290915290205460ff16949350505050565b61217b613bf4565b61016080870151610140808801919091528701519086015261219b613c28565b6121a487611015565b90506121ae613c28565b6121b787611015565b905060006121c3611a36565b90506121d18984838a612b43565b6121dd88838389612b43565b6121f1898985602001518560200151612c1a565b61220a8989856040015185604001516003543a8b612c5f565b93506122258982856020015186604001518860000151612db4565b61223e8882846020015185604001518860200151612db4565b612254836020015183602001518b8b8589612e78565b50505095945050505050565b60606318e4b14160e01b848484604051602401611a7a939291906151cd565b60006108e68261228e85613005565b613080565b6060830151600090816122a7858386611e6c565b905060058160088111156122b757fe5b14156122d9576122d26122ca878761309f565b8684876130be565b9250612310565b60078160088111156122e757fe5b1415612301576122d26122fa878761309f565b8386613147565b61230d81868487611f3b565b92505b50509392505050565b612321613b9d565b612329613c28565b61233285611015565b9050600061233e611a36565b905061234c86838387612b43565b600061236983604001518860a0015161188b90919063ffffffff16565b905060006123778783613156565b905061238788826003543a61316c565b94506000846020015190506123a389858388604001518a612db4565b6123af818a86896131e3565b50505050509392505050565b6000806123d3600154846123ec90919063ffffffff16565b6000818152600960205260409020549092509050915091565b60006108e68261228e8561327a565b82516000908161240c858386611e6c565b9050600581600881111561241c57fe5b141561242f576122d26122ca8787613333565b600781600881111561243d57fe5b1415612301576122d26122fa8787613333565b801561259857602084518161246157fe5b06600414612478576124786109a760008787613352565b600061248a858263ffffffff61337116565b6001600160e01b031981166000908152600260205260409020549091506001600160a01b0316806124c4576124c46109a760018989613352565b604051606090632a17967960e21b906124e7908990899089908990602401615018565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b0316836040516125389190614d8c565b6000604051808303816000865af19150503d8060008114612575576040519150601f19603f3d011682016040523d82523d6000602084013e61257a565b606091505b509150915081612592576125926109a78b8b846133a5565b50505050505b5050505050565b6125a7613b9d565b6125b2848484612319565b9050828160200151146108e6576108e66109a76002858460200151612260565b60606311c7b72060e01b83836040516024016125ef929190614ff9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905092915050565b604080518082019091526004815263734f6e1f60e11b602082015290565b6060631de45ad160e01b83836040516024016125ef929190614dc6565b8260200151421061267d5761267d6109a76001836133c4565b60408301513a8114612697576126976109a7833a846133e1565b6006546001600160a01b031680156126b6576126b66109a78483613400565b60008381526005602052604090205460ff16156126db576126db6109a76000856133c4565b60608501516001600160a01b038116331480159061270157506126ff868587612293565b155b15612716576127166109a76001868489611ede565b505050505050565b6001600160a01b0382163314610b2e57600680546001600160a01b0383166001600160a01b03199091161790555050565b60606320d11f6160e01b83836040516024016125ef929190614ee5565b4780156107c357604051339082156108fc029083906000818181858888f19350505050158015610b2e573d6000803e3d6000fd5b6040805180820190915260048152630c3b823f60e01b602082015290565b60608201516001600160a01b0316156127f85760608201516001600160a01b031633146127f8576127f86109a7600283602001513361341d565b6000612802611a36565b9050806001600160a01b031683600001516001600160a01b031614612834576128346109a7600084602001518461341d565b505050565b6000818152600a602052604090819020805460ff19166001179055828101518351610140850151610160860151935185946001600160a01b039485169493909316927f02c310a9a43963ff31a754a4099cc435ed498049687539d72d7818d9b093415c926128ab92909190339061506a565b60405180910390a45050565b606063e946c1bb60e01b848484604051602401611a7a93929190615197565b6000828201838110156108e6576108e66109a7600086866128b7565b606063d4092f4f60e01b8260405160240161290d9190615189565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050919050565b60008261295557506000610775565b8282028284828161296257fe5b04146108e6576108e66109a7600186866128b7565b60008161298d5761298d6109a7600385856128b7565b600082848161299857fe5b04949350505050565b60008151600014156129bd576129bd6109a76002868686611ede565b816001835103815181106129cd57fe5b016020015160f81c6008811115610a7457fe5b60008160200183511015612a0157612a016109a7600585518560200161343c565b50016020015190565b8051600090612a2383600019830163ffffffff61345b16565b604051606090630b135d3f60e11b90612a429088908790602401614ee5565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050612a86848363ffffffff61345b16565b60006060866001600160a01b031683604051612aa29190614d8c565b600060405180830381855afa9150503d8060008114612add576040519150601f19603f3d011682016040523d82523d6000602084013e612ae2565b606091505b5091509150818015612af5575080516020145b15612b295763b067138160e01b612b1382600063ffffffff61337116565b6001600160e01b031916149450505050506108e6565b612b386109a78989898561345f565b505050509392505050565b600383516006811115612b5257fe5b14612b6c57612b6c6109a784602001518560000151613480565b60608401516001600160a01b031615612ba65760608401516001600160a01b03163314612ba657612ba66109a7600285602001513361341d565b60208401516001600160a01b031615612be957816001600160a01b031684602001516001600160a01b031614612be957612be96109a7600185602001518561341d565b612bf8848460200151836123fb565b612c1457612c146109a760008560200151876000015185611ede565b50505050565b60a08084015190850151612c339163ffffffff61294616565b60808085015190860151612c4c9163ffffffff61294616565b1015612c1457612c146109a7838361349d565b612c67613bf4565b60a0880151600090612c7f908863ffffffff61188b16565b90506000612c968a608001518b60a00151846134ba565b90506000612cb1888b60a0015161188b90919063ffffffff16565b90506000612cc88b608001518c60a00151846134ba565b90508515612ce557612cde8c8c858785876134ee565b9450612cf6565b612cf38c8c858785876135c0565b94505b84515160808d015160c08e0151612d0e9291906134ba565b85516040015284516020015160a08d015160e08e0151612d2f9291906134ba565b85516060015260208501515160808c015160c08d0151612d509291906134ba565b85602001516040018181525050612d788560200151602001518c60a001518d60e001516134ba565b6020860151606001526000612d93888a63ffffffff61294616565b86516080908101829052602088015101525050505050979650505050505050565b6020810151612dca90839063ffffffff6128d616565b60096000858152602001908152602001600020819055508285604001516001600160a01b031686600001516001600160a01b03167f6869791f0a34781b29882982cc39e882768cf2c96995c2a110c577c53bc932d58861014001518961016001518a61018001518b6101a001518b338a600001518b602001518c604001518d606001518e60800151604051612e699b9a9998979695949392919061509e565b60405180910390a45050505050565b8351835160408087015190860151610140870151855160200151612ea1918b9186908890612450565b612ebb8a8961014001518686896020015160200151612450565b612ed5898861018001518584896020015160400151612450565b612eef8a8961018001518685896000015160400151612450565b612f058a89610140015186898960400151612450565b612f1b8988610140015185898960600151612450565b6000612f338b8b88600001516080015188888c613659565b905080612f50578551600060809182018190526020880151909101525b816001600160a01b0316836001600160a01b0316148015612f8657506101a080890151908a0151612f869163ffffffff6136a816565b15612fc457612fbf8b8a6101a001518986612fba8b60200151606001518c60000151606001516128d690919063ffffffff16565b612450565b612ff8565b612fde8a896101a0015189858a6020015160600151612450565b612ff88b8a6101a0015189868a6000015160600151612450565b5050505050505050505050565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b60405161190160f01b8152600281019290925260228201526042902090565b6040516060906337811f6d60e21b906125ef90859085906024016152bd565b805160009060158110156130dc576130dc6109a76002878787611ede565b60006130f284601419840163ffffffff6136cd16565b6001600160a01b0380871660009081526008602090815260408083209385168352929052205490915060ff1661312f5761312f6109a78683613700565b61313c818886601561371d565b979650505050505050565b6000610a74838584600161371d565b600081831061316557816108e6565b5090919050565b613174613b9d565b6020810184905260a085015160808601516131909186916134ba565b815260a085015160c08601516131a79186916134ba565b604082015260a085015160e08601516131c19186916134ba565b60608201526131d6828463ffffffff61294616565b6080820152949350505050565b6131fd848461016001518486600001518560200151612450565b613217848461014001518560000151858560000151612450565b61323184846101a001518486604001518560600151612450565b61324f84846101800151856000015186604001518560400151612450565b6000613265858360800151866000015186613855565b90508061259857600060808301525050505050565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a7534939092909160208710156132c657fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b6040516060906307dfca1960e31b906125ef908590859060240161527d565b606063488219a660e01b848484604051602401611a7a9392919061515c565b60008160040183511015613392576133926109a7600385518560040161343c565b5001602001516001600160e01b03191690565b6060634678472b60e01b848484604051602401611a7a93929190614f05565b606063f598518460e01b83836040516024016125ef929190615223565b606063a26dac0960e01b848484604051602401611a7a93929190614f9b565b606063dec4aedf60e01b83836040516024016125ef929190614e8f565b606063e53c76c860e01b848484604051602401611a7a939291906151a5565b6060632800659560e01b848484604051602401611a7a939291906151db565b9052565b6060631b8388f760e01b85858585604051602401611eff9493929190614e9d565b606063fdb6ca8d60e01b83836040516024016125ef929190614f39565b606063b6555d6f60e01b83836040516024016125ef929190614eca565b60006134c784848461388d565b156134da576134da6109a78585856138f3565b610a7483611e60868563ffffffff61294616565b6134f6613bf4565b818511848411848611156135165761350f898686613912565b9250613565565b868411156135565782518790528251602001869052608088015160a08901516135409190896134ba565b6020808501805192909252905101879052613565565b6135628787878761394f565b92505b811561358b5760208084015101518351516135859163ffffffff61188b16565b60408401525b80156135b357825160209081015190840151516135ad9163ffffffff61188b16565b60608401525b50505b9695505050505050565b6135c8613bf4565b828411156135e2576135db878484613912565b9050613630565b828410156136215780518590528051602090810185905281015184905260a0860151608087015161361491908661397a565b6020808301510152613630565b61362d8585858561394f565b90505b602080820151015181515161364a9163ffffffff61188b16565b60408201529695505050505050565b6004546000906001600160a01b0316801561369e5747600061367f8a84848b8b8a6139b2565b905061369189848385038b8a8a6139b2565b50600193505050506135b6565b60009150506135b6565b6000815183511480156108e65750508051602091820120825192909101919091201490565b600081601401835110156136ee576136ee6109a7600485518560140161343c565b5001601401516001600160a01b031690565b606063a15c0d0660e01b83836040516024016125ef929190614dc6565b81516000906137348484830363ffffffff61345b16565b6040516060906320c13b0b60e01b906137539088908890602401615045565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050613797858363ffffffff61345b16565b60006060886001600160a01b0316836040516137b39190614d8c565b600060405180830381855afa9150503d80600081146137ee576040519150601f19603f3d011682016040523d82523d6000602084013e6137f3565b606091505b5091509150818015613806575080516020145b1561383a576320c13b0b60e01b61382482600063ffffffff61337116565b6001600160e01b03191614945050505050610a74565b6138496109a78a8a8a85613a9a565b50505050949350505050565b6004546000906001600160a01b03168015613883576138788682478888886139b2565b506001915050610a74565b6000915050610a74565b60008261389f5761389f6109a7613abb565b8115806138aa575083155b156138b7575060006108e6565b600083806138c157fe5b85840990506138d6858463ffffffff61294616565b6138e8826103e863ffffffff61294616565b101595945050505050565b606063339f3de260e01b848484604051602401611a7a93929190614f9b565b61391a613bf4565b60208082018051859052518101839052815101839052608084015160a08501516139459190856134ba565b8151529392505050565b613957613bf4565b805194909452835160209081019390935282840180519290925290519091015290565b6000613987848484613ad9565b1561399a5761399a6109a78585856138f3565b610a7483611e60611e4482600163ffffffff61188b16565b60008385106139be5750825b60405160609063a3b4a32760e01b906139df90869086908990602401614de1565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060886001600160a01b03168484604051613a319190614d8c565b60006040518083038185875af1925050503d8060008114613a6e576040519150601f19603f3d011682016040523d82523d6000602084013e613a73565b606091505b509150915081613a8d57613a8d6109a78b89898986613b3d565b5050509695505050505050565b6060635bd0428d60e01b85858585604051602401611eff9493929190614e09565b60408051808201909152600481526329e460df60e21b602082015290565b600082613aeb57613aeb6109a7613abb565b811580613af6575083155b15613b03575060006108e6565b60008380613b0d57fe5b858409905083613b23818363ffffffff61188b16565b81613b2a57fe5b0690506138d6858463ffffffff61294616565b60606387cb1e7560e01b8686868686604051602401613b60959493929190614f54565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905095945050505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280606081526020016060815260200160008152602001600081525090565b6040518060800160405280613c07613b9d565b8152602001613c14613b9d565b815260200160008152602001600081525090565b6040805160608101909152806000815260006020820181905260409091015290565b604051806101c0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b803561077581615473565b600082601f830112613cf957600080fd5b8135613d0c613d07826152f4565b6152ce565b91508181835260208401935060208101905083856020840282011115613d3157600080fd5b60005b83811015613d5d5781613d478882613cdd565b8452506020928301929190910190600101613d34565b5050505092915050565b600082601f830112613d7857600080fd5b8135613d86613d07826152f4565b81815260209384019390925082018360005b83811015613d5d5781358601613dae8882613f1a565b8452506020928301929190910190600101613d98565b600082601f830112613dd557600080fd5b8135613de3613d07826152f4565b81815260209384019390925082018360005b83811015613d5d5781358601613e0b8882613fec565b8452506020928301929190910190600101613df5565b600082601f830112613e3257600080fd5b8135613e40613d07826152f4565b81815260209384019390925082018360005b83811015613d5d5781358601613e68888261418d565b8452506020928301929190910190600101613e52565b600082601f830112613e8f57600080fd5b8135613e9d613d07826152f4565b91508181835260208401935060208101905083856020840282011115613ec257600080fd5b60005b83811015613d5d5781613ed88882613ef9565b8452506020928301929190910190600101613ec5565b803561077581615487565b803561077581615490565b803561077581615499565b805161077581615499565b600082601f830112613f2b57600080fd5b8135613f39613d0782615314565b91508082526020830160208301858383011115613f5557600080fd5b613f608382846153ff565b50505092915050565b600060a08284031215613f7b57600080fd5b613f8560a06152ce565b90506000613f93848461421b565b8252506020613fa48484830161421b565b6020830152506040613fb88482850161421b565b6040830152506060613fcc8482850161421b565b6060830152506080613fe08482850161421b565b60808301525092915050565b60006101c08284031215613fff57600080fd5b61400a6101c06152ce565b905060006140188484613cdd565b825250602061402984848301613cdd565b602083015250604061403d84828501613cdd565b604083015250606061405184828501613cdd565b606083015250608061406584828501613ef9565b60808301525060a061407984828501613ef9565b60a08301525060c061408d84828501613ef9565b60c08301525060e06140a184828501613ef9565b60e0830152506101006140b684828501613ef9565b610100830152506101206140cc84828501613ef9565b610120830152506101408201356001600160401b038111156140ed57600080fd5b6140f984828501613f1a565b610140830152506101608201356001600160401b0381111561411a57600080fd5b61412684828501613f1a565b610160830152506101808201356001600160401b0381111561414757600080fd5b61415384828501613f1a565b610180830152506101a08201356001600160401b0381111561417457600080fd5b61418084828501613f1a565b6101a08301525092915050565b600060a0828403121561419f57600080fd5b6141a960a06152ce565b905060006141b78484613ef9565b82525060206141c884848301613ef9565b60208301525060406141dc84828501613ef9565b60408301525060606141f084828501613cdd565b60608301525060808201356001600160401b0381111561420f57600080fd5b613fe084828501613f1a565b805161077581615490565b60006020828403121561423857600080fd5b6000610a748484613cdd565b6000806040838503121561425757600080fd5b60006142638585613cdd565b925050602061427485828601613cdd565b9150509250929050565b6000806040838503121561429157600080fd5b600061429d8585613cdd565b925050602061427485828601613eee565b600080600080608085870312156142c457600080fd5b84356001600160401b038111156142da57600080fd5b6142e687828801613d67565b94505060208501356001600160401b0381111561430257600080fd5b61430e87828801613ce8565b93505060408501356001600160401b0381111561432a57600080fd5b61433687828801613ce8565b92505060608501356001600160401b0381111561435257600080fd5b61435e87828801613e7e565b91505092959194509250565b60006020828403121561437c57600080fd5b81356001600160401b0381111561439257600080fd5b610a7484828501613dc4565b600080600080608085870312156143b457600080fd5b84356001600160401b038111156143ca57600080fd5b6143d687828801613dc4565b94505060208501356001600160401b038111156143f257600080fd5b6143fe87828801613dc4565b93505060408501356001600160401b0381111561441a57600080fd5b61442687828801613d67565b92505060608501356001600160401b0381111561444257600080fd5b61435e87828801613d67565b60008060006060848603121561446357600080fd5b83356001600160401b0381111561447957600080fd5b61448586828701613dc4565b93505060208401356001600160401b038111156144a157600080fd5b6144ad86828701613e7e565b92505060408401356001600160401b038111156144c957600080fd5b6144d586828701613d67565b9150509250925092565b6000806000606084860312156144f457600080fd5b83356001600160401b0381111561450a57600080fd5b61451686828701613dc4565b93505060206144ad86828701613ef9565b6000806040838503121561453a57600080fd5b82356001600160401b0381111561455057600080fd5b61455c85828601613e21565b92505060208301356001600160401b0381111561457857600080fd5b61427485828601613d67565b60006020828403121561459657600080fd5b6000610a748484613ef9565b600080604083850312156145b557600080fd5b60006142638585613ef9565b6000806000606084860312156145d657600080fd5b60006145e28686613ef9565b93505060206145f386828701613cdd565b92505060408401356001600160401b0381111561460f57600080fd5b6144d586828701613f1a565b60006020828403121561462d57600080fd5b6000610a748484613f04565b60006020828403121561464b57600080fd5b6000610a748484613f0f565b600060a0828403121561466957600080fd5b6000610a748484613f69565b60006020828403121561468757600080fd5b81356001600160401b0381111561469d57600080fd5b610a7484828501613fec565b600080604083850312156146bc57600080fd5b82356001600160401b038111156146d257600080fd5b6146de85828601613fec565b92505060208301356001600160401b038111156146fa57600080fd5b61427485828601613f1a565b6000806000806080858703121561471c57600080fd5b84356001600160401b0381111561473257600080fd5b61473e87828801613fec565b94505060208501356001600160401b0381111561475a57600080fd5b61476687828801613fec565b93505060408501356001600160401b0381111561478257600080fd5b61478e87828801613f1a565b92505060608501356001600160401b038111156147aa57600080fd5b61435e87828801613f1a565b6000806000606084860312156147cb57600080fd5b83356001600160401b038111156147e157600080fd5b6147ed86828701613fec565b93505060206145f386828701613ef9565b6000806040838503121561481157600080fd5b82356001600160401b0381111561482757600080fd5b6146de8582860161418d565b60006108e683836149ac565b600061484b8383614b0b565b505060a00190565b61485c816153b2565b82525050565b61485c8161534e565b600061487682615341565b6148808185615345565b9350836020820285016148928561533b565b8060005b858110156148cc57848403895281516148af8582614833565b94506148ba8361533b565b60209a909a0199925050600101614896565b5091979650505050505050565b60006148e482615341565b6148ee8185615345565b93506148f98361533b565b8060005b83811015614927578151614911888261483f565b975061491c8361533b565b9250506001016148fd565b509495945050505050565b600061493d82615341565b6149478185615345565b93506149528361533b565b8060005b8381101561492757815161496a888261483f565b97506149758361533b565b925050600101614956565b61485c81615359565b61485c8161535e565b61485c61499e8261535e565b61535e565b61485c81615361565b60006149b782615341565b6149c18185615345565b93506149d181856020860161540b565b6149da81615437565b9093019392505050565b60006149ef82615341565b6149f98185610a3f565b9350614a0981856020860161540b565b9290920192915050565b61485c816153bd565b61485c816153c8565b61485c816153d3565b61485c816153de565b61485c816153e9565b6000614a4d601c83610a3f565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b6000614a86601483615345565b731514905394d1915494d7d4d550d0d154d4d1955360621b815260200192915050565b8051608080845260009190840190614ac18282614932565b91505060208301518482036020860152614adb8282614932565b9150506040830151614af06040860182614989565b506060830151614b036060860182614989565b509392505050565b805160a0830190614b1c8482614989565b506020820151614b2f6020850182614989565b506040820151614b426040850182614989565b506060820151614b556060850182614989565b506080820151612c146080850182614989565b8051610180830190614b7a8482614b0b565b506020820151614b8d60a0850182614b0b565b506040820151614ba1610140850182614989565b506060820151612c14610160850182614989565b80516060830190614bc68482614a37565b506020820151614bd96020850182614989565b506040820151612c146040850182614989565b80516000906101c0840190614c018582614862565b506020830151614c146020860182614862565b506040830151614c276040860182614862565b506060830151614c3a6060860182614862565b506080830151614c4d6080860182614989565b5060a0830151614c6060a0860182614989565b5060c0830151614c7360c0860182614989565b5060e0830151614c8660e0860182614989565b50610100830151614c9b610100860182614989565b50610120830151614cb0610120860182614989565b50610140830151848203610140860152614cca82826149ac565b915050610160830151848203610160860152614ce682826149ac565b915050610180830151848203610180860152614d0282826149ac565b9150506101a08301518482036101a0860152610cf882826149ac565b805160009060a0840190614d328582614989565b506020830151614d456020860182614989565b506040830151614d586040860182614989565b506060830151614d6b6060860182614862565b5060808301518482036080860152610cf882826149ac565b61485c816153ac565b60006108e682846149e4565b6000614da382614a40565b9150614daf8284614992565b50602001919050565b602081016107758284614862565b60408101614dd48285614862565b6108e66020830184614862565b60608101614def8286614862565b614dfc6020830185614862565b610a746040830184614989565b60808101614e178287614862565b8181036020830152614e2981866149ac565b90508181036040830152614e3d81856149ac565b905081810360608301526135b681846149ac565b602080825281016108e6818461486b565b602080825281016108e681846148d9565b602081016107758284614980565b602081016107758284614989565b60408101614dd48285614989565b60808101614eab8287614989565b614eb86020830186614862565b8181036040830152614e3d81856149ac565b60408101614ed88285614989565b6108e66020830184614989565b60408101614ef38285614989565b8181036020830152610a7481846149ac565b60608101614f138286614989565b8181036020830152614f2581856149ac565b90508181036040830152610cf881846149ac565b60408101614f478285614989565b6108e66020830184614a37565b60a08101614f628288614989565b614f6f6020830187614989565b614f7c6040830186614862565b614f896060830185614862565b818103608083015261313c81846149ac565b60608101614fa98286614989565b614dfc6020830185614989565b60808101614fc48287614989565b614fd16020830186614d83565b614fde6040830185614989565b610cf86060830184614989565b6020810161077582846149a3565b60408101614dd482856149a3565b602080825281016108e681846149ac565b6080808252810161502981876149ac565b90506150386020830186614862565b614fde6040830185614862565b6040808252810161505681856149ac565b90508181036020830152610a7481846149ac565b6060808252810161507b81866149ac565b9050818103602083015261508f81856149ac565b9050610a746040830184614853565b61016080825281016150b0818e6149ac565b905081810360208301526150c4818d6149ac565b905081810360408301526150d8818c6149ac565b905081810360608301526150ec818b6149ac565b90506150fb608083018a614862565b61510860a0830189614853565b61511560c0830188614989565b61512260e0830187614989565b615130610100830186614989565b61513e610120830185614989565b61514c610140830184614989565b9c9b505050505050505050505050565b6060810161516a8286614a13565b6151776020830185614989565b8181036040830152610cf881846149ac565b602081016107758284614a1c565b60608101614fa98286614a1c565b606081016151b38286614a25565b6151c06020830185614989565b610a746040830184614862565b60608101614fa98286614a25565b60608101614fa98286614a2e565b608081016151f78287614a37565b6152046020830186614989565b6152116040830185614862565b81810360608301526135b681846149ac565b60408101614ed88285614a13565b6020808252810161077581614a79565b602080825281016108e68184614aa9565b60a081016107758284614b0b565b61018081016107758284614b68565b606081016107758284614bb5565b6040808252810161528e8185614bec565b90506108e66020830184614989565b606080825281016152ae8186614bec565b90506151776020830185614989565b6040808252810161528e8185614d1e565b6040518181016001600160401b03811182821017156152ec57600080fd5b604052919050565b60006001600160401b0382111561530a57600080fd5b5060209081020190565b60006001600160401b0382111561532a57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610775826153a0565b151590565b90565b6001600160e01b03191690565b80610a3f81615441565b80610a3f8161544b565b80610a3f81615455565b80610a3f8161545f565b80610a3f81615469565b6001600160a01b031690565b60ff1690565b6000610775826153f4565b60006107758261536e565b600061077582615378565b600061077582615382565b60006107758261538c565b600061077582615396565b60006107758261534e565b82818337506000910152565b60005b8381101561542657818101518382015260200161540e565b83811115612c145750506000910152565b601f01601f191690565b600281106107c357fe5b600481106107c357fe5b600381106107c357fe5b600881106107c357fe5b600781106107c357fe5b61547c8161534e565b81146107c357600080fd5b61547c81615359565b61547c8161535e565b61547c81615361565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a7231582087e05071fafb91608a204fca02a84264fc88be64e36928c84047b7dd41f10f146c6578706572696d656e74616cf564736f6c63430005100040", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D45CD23 GT PUSH2 0x144 JUMPI DUP1 PUSH4 0xBEEE2E14 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xDD885E2D GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xDD885E2D EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xDEDFC1F1 EQ PUSH2 0x68F JUMPI DUP1 PUSH4 0xE14B58C4 EQ PUSH2 0x6A2 JUMPI DUP1 PUSH4 0xEEA086BA EQ PUSH2 0x6B5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6CA JUMPI DUP1 PUSH4 0xFC74896D EQ PUSH2 0x6EA JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xBEEE2E14 EQ PUSH2 0x5E5 JUMPI DUP1 PUSH4 0xC0FA16CC EQ PUSH2 0x5F8 JUMPI DUP1 PUSH4 0xC26CFECD EQ PUSH2 0x618 JUMPI DUP1 PUSH4 0xC585BB93 EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0xD9BFA73E EQ PUSH2 0x64D JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x9B44D556 GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x9B44D556 EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0x9D3FA4B9 EQ PUSH2 0x552 JUMPI DUP1 PUSH4 0xA12DCC6F EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0xA6C3BF33 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xB04FBDDD EQ PUSH2 0x5B2 JUMPI DUP1 PUSH4 0xB718E292 EQ PUSH2 0x5D2 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x8D45CD23 EQ PUSH2 0x4B7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0x8EA8DFE4 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x9331C742 EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0x9694A402 EQ PUSH2 0x52C JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x60704108 GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x7B8E3514 GT PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x7B8E3514 EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0x8171C407 EQ PUSH2 0x42F JUMPI DUP1 PUSH4 0x82C174D0 EQ PUSH2 0x44F JUMPI DUP1 PUSH4 0x850A1501 EQ PUSH2 0x46F JUMPI DUP1 PUSH4 0x88EC79FB EQ PUSH2 0x484 JUMPI DUP1 PUSH4 0x8BC8EFB3 EQ PUSH2 0x4A4 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x60704108 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x6A1A80FD EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0x6FCF3E9E EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x77FCCE68 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x78D29AC1 EQ PUSH2 0x3FC JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x2AC12622 GT PUSH2 0x224 JUMPI DUP1 PUSH4 0x2AC12622 EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0x2DA62987 EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x369DA099 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x46C02D7A EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x4F9559B1 EQ PUSH2 0x376 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x228E168 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xEFCA185 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x1CE4C78B EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0x2280C910 EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x288CDC91 EQ PUSH2 0x2F0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x27C CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0x70A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4E73 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x71F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C3 PUSH2 0x733 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4E81 JUMP JUMPDEST PUSH2 0x2E3 PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x47FE JUMP JUMPDEST PUSH2 0x739 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x5007 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C3 PUSH2 0x30B CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0x77B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0x78D JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x4675 JUMP JUMPDEST PUSH2 0x7A2 JUMP JUMPDEST PUSH2 0x356 PUSH2 0x351 CALLDATASIZE PUSH1 0x4 PUSH2 0x44DF JUMP JUMPDEST PUSH2 0x7C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x5252 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x371 CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0x8ED JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x384 CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0x935 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x3A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x461B JUMP JUMPDEST PUSH2 0xA1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4DB8 JUMP JUMPDEST PUSH2 0x3C9 PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x439E JUMP JUMPDEST PUSH2 0xA44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x5241 JUMP JUMPDEST PUSH2 0x3C9 PUSH2 0x3E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x439E JUMP JUMPDEST PUSH2 0xA7C JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x3F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x427E JUMP JUMPDEST PUSH2 0xA9A JUMP JUMPDEST PUSH2 0x356 PUSH2 0x40A CALLDATASIZE PUSH1 0x4 PUSH2 0x44DF JUMP JUMPDEST PUSH2 0xB32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x42A CALLDATASIZE PUSH1 0x4 PUSH2 0x4244 JUMP JUMPDEST PUSH2 0xC82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x44A CALLDATASIZE PUSH1 0x4 PUSH2 0x45C1 JUMP JUMPDEST PUSH2 0xCA2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x46A CALLDATASIZE PUSH1 0x4 PUSH2 0x45A2 JUMP JUMPDEST PUSH2 0xD01 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0xD21 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x492 CALLDATASIZE PUSH1 0x4 PUSH2 0x4706 JUMP JUMPDEST PUSH2 0xD30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x5260 JUMP JUMPDEST PUSH2 0x356 PUSH2 0x4B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x44DF JUMP JUMPDEST PUSH2 0xD4E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x4D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x47FE JUMP JUMPDEST PUSH2 0xD82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0xDA7 JUMP JUMPDEST PUSH2 0x4FF PUSH2 0x4FA CALLDATASIZE PUSH1 0x4 PUSH2 0x444E JUMP JUMPDEST PUSH2 0xDB6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4E62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x518 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x4584 JUMP JUMPDEST PUSH2 0xEE1 JUMP JUMPDEST PUSH2 0x4FF PUSH2 0x53A CALLDATASIZE PUSH1 0x4 PUSH2 0x444E JUMP JUMPDEST PUSH2 0xF29 JUMP JUMPDEST PUSH2 0x356 PUSH2 0x54D CALLDATASIZE PUSH1 0x4 PUSH2 0x47B6 JUMP JUMPDEST PUSH2 0xFF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x572 PUSH2 0x56D CALLDATASIZE PUSH1 0x4 PUSH2 0x4675 JUMP JUMPDEST PUSH2 0x1015 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x526F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x59A CALLDATASIZE PUSH1 0x4 PUSH2 0x46A9 JUMP JUMPDEST PUSH2 0x10FD JUMP JUMPDEST PUSH2 0x356 PUSH2 0x5AD CALLDATASIZE PUSH1 0x4 PUSH2 0x44DF JUMP JUMPDEST PUSH2 0x1122 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x5CD CALLDATASIZE PUSH1 0x4 PUSH2 0x42AE JUMP JUMPDEST PUSH2 0x1156 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x5E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4706 JUMP JUMPDEST PUSH2 0x11E8 JUMP JUMPDEST PUSH2 0x4FF PUSH2 0x5F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x444E JUMP JUMPDEST PUSH2 0x1206 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x613 CALLDATASIZE PUSH1 0x4 PUSH2 0x4226 JUMP JUMPDEST PUSH2 0x12BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C3 PUSH2 0x12CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x639 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x648 CALLDATASIZE PUSH1 0x4 PUSH2 0x4226 JUMP JUMPDEST PUSH2 0x12D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C3 PUSH2 0x668 CALLDATASIZE PUSH1 0x4 PUSH2 0x4244 JUMP JUMPDEST PUSH2 0x13F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x682 PUSH2 0x1414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4FEB JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x69D CALLDATASIZE PUSH1 0x4 PUSH2 0x436A JUMP JUMPDEST PUSH2 0x141F JUMP JUMPDEST PUSH2 0x356 PUSH2 0x6B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x47B6 JUMP JUMPDEST PUSH2 0x1461 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 PUSH2 0x147C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x6E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4226 JUMP JUMPDEST PUSH2 0x148B JUMP JUMPDEST PUSH2 0x6FD PUSH2 0x6F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4527 JUMP JUMPDEST PUSH2 0x14FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x4E51 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x727 PUSH2 0x1625 JUMP JUMPDEST PUSH2 0x731 PUSH1 0x0 PUSH2 0x1652 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x743 PUSH2 0x16BB JUMP JUMPDEST ISZERO PUSH2 0x759 JUMPI PUSH2 0x752 DUP4 DUP4 PUSH2 0x16CB JUMP JUMPDEST SWAP1 POP PUSH2 0x775 JUMP JUMPDEST PUSH2 0x761 PUSH2 0x17C7 JUMP JUMPDEST PUSH2 0x76B DUP4 DUP4 PUSH2 0x16CB JUMP JUMPDEST SWAP1 POP PUSH2 0x775 PUSH2 0x17DC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x7AA PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x7BB PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x7C3 PUSH2 0x187C JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x7CE PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x7D6 PUSH2 0x16BB JUMP JUMPDEST ISZERO PUSH2 0x86C JUMPI DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x865 JUMPI PUSH1 0x0 PUSH2 0x800 DUP5 PUSH1 0x20 ADD MLOAD DUP8 PUSH2 0x188B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x80A PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x83B DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x819 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP9 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x82E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x18AA JUMP JUMPDEST SWAP1 POP PUSH2 0x847 DUP6 DUP3 PUSH2 0x199B JUMP JUMPDEST SWAP5 POP DUP7 DUP6 PUSH1 0x20 ADD MLOAD LT PUSH2 0x85B JUMPI POP POP PUSH2 0x865 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP POP PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x874 PUSH2 0x17C7 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x8DC JUMPI PUSH1 0x0 PUSH2 0x899 DUP5 PUSH1 0x20 ADD MLOAD DUP8 PUSH2 0x188B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x8A3 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x8B2 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x819 JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0x8BE DUP6 DUP3 PUSH2 0x199B JUMP JUMPDEST SWAP5 POP DUP7 DUP6 PUSH1 0x20 ADD MLOAD LT PUSH2 0x8D2 JUMPI POP POP PUSH2 0x8DC JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x879 JUMP JUMPDEST POP POP PUSH2 0x8E6 PUSH2 0x17DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8F5 PUSH2 0x17F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FF PUSH2 0x1A36 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE POP PUSH2 0x7BB PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x93D PUSH2 0x17F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x947 PUSH2 0x1A36 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ PUSH2 0x961 JUMPI CALLER PUSH2 0x964 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 DUP5 ADD SWAP1 DUP1 DUP3 GT PUSH2 0x9AC JUMPI PUSH2 0x9AC PUSH2 0x9A7 DUP6 DUP6 DUP5 PUSH2 0x1A5B JUMP JUMPDEST PUSH2 0x1AB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE MLOAD PUSH32 0x82AF639571738F4EBD4268FB0363D8957EBE1BBB9E78DBA5EBD69EED39B154F0 SWAP1 PUSH2 0xA07 SWAP1 DUP7 SWAP1 PUSH2 0x4E81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0x7BB PUSH2 0x1868 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA4C PUSH2 0x3BCC JUMP JUMPDEST PUSH2 0xA54 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0xA62 DUP6 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x1ABD JUMP JUMPDEST SWAP1 POP PUSH2 0xA6C PUSH2 0x1868 JUMP JUMPDEST PUSH2 0xA74 PUSH2 0x187C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xA84 PUSH2 0x3BCC JUMP JUMPDEST PUSH2 0xA8C PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0xA62 DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x1ABD JUMP JUMPDEST PUSH2 0xAA2 PUSH2 0x17F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAC PUSH2 0x1A36 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xA8656E308026EEABCE8F0BC18048433252318AB80AC79DA0B3D3D8697DFBA891 SWAP1 PUSH2 0xB15 SWAP1 DUP7 SWAP1 PUSH2 0x4E73 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0xB26 PUSH2 0x1868 JUMP JUMPDEST PUSH2 0xB2E PUSH2 0x187C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB3A PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0xB42 PUSH2 0x16BB JUMP JUMPDEST ISZERO PUSH2 0xC00 JUMPI DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x865 JUMPI DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0xB69 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBA6 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB7C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xA0 ADD MLOAD DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB94 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP5 PUSH2 0x1E2A JUMP JUMPDEST SWAP1 POP PUSH2 0xBB0 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0xBD4 DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xBBF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP10 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x82E JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0xBE0 DUP7 DUP3 PUSH2 0x199B JUMP JUMPDEST SWAP6 POP DUP8 DUP7 PUSH1 0x0 ADD MLOAD LT PUSH2 0xBF5 JUMPI POP POP POP PUSH2 0x865 JUMP JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0xB4C JUMP JUMPDEST PUSH2 0xC08 PUSH2 0x17C7 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x8DC JUMPI DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0xC2A SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC3D DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB7C JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0xC47 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0xC56 DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xBBF JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0xC62 DUP7 DUP3 PUSH2 0x199B JUMP JUMPDEST SWAP6 POP DUP8 DUP7 PUSH1 0x0 ADD MLOAD LT PUSH2 0xC77 JUMPI POP POP POP PUSH2 0x8DC JUMP JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0xC0D JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCB0 DUP6 DUP6 DUP6 PUSH2 0x1E6C JUMP JUMPDEST SWAP1 POP PUSH1 0x5 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0xCC0 JUMPI INVALID JUMPDEST EQ DUP1 PUSH2 0xCD7 JUMPI POP PUSH1 0x7 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0xCD5 JUMPI INVALID JUMPDEST EQ JUMPDEST ISZERO PUSH2 0xCEC JUMPI PUSH2 0xCEC PUSH2 0x9A7 PUSH1 0x5 DUP8 DUP8 DUP8 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0xCF8 DUP2 DUP7 DUP7 DUP7 PUSH2 0x1F3B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xD38 PUSH2 0x3BF4 JUMP JUMPDEST PUSH2 0xD40 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0xA62 DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x2173 JUMP JUMPDEST PUSH2 0xD56 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0xD61 DUP5 DUP5 DUP5 PUSH2 0xB32 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x0 ADD MLOAD LT ISZERO PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x0 DUP6 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x2260 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xD9A PUSH1 0x1 SLOAD DUP6 PUSH2 0x227F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0xA74 DUP5 DUP3 DUP6 PUSH2 0x2293 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDC0 PUSH2 0x16BB JUMP JUMPDEST ISZERO PUSH2 0xE63 JUMPI DUP4 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0xE00 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xDED PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xDE5 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x865 JUMPI PUSH2 0xE44 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE1C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xE30 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x82E JUMPI INVALID JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE50 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xE06 JUMP JUMPDEST PUSH2 0xE6B PUSH2 0x17C7 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0xEA6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xE93 PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xE8B JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x8DC JUMPI PUSH2 0xEC2 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE1C JUMPI INVALID JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xECE JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xEAC JUMP JUMPDEST PUSH2 0xEE9 PUSH2 0x1625 JUMP JUMPDEST PUSH32 0x3A3E76D7A75E198AEF1F53137E4F2A8A2EC74E2E9526DB8404D08CCC9F1E621D PUSH1 0x3 SLOAD DUP3 PUSH1 0x40 MLOAD PUSH2 0xF1C SWAP3 SWAP2 SWAP1 PUSH2 0x4ECA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF33 PUSH2 0x17F1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0xF6E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xF5B PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xF53 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0xFDE JUMPI PUSH2 0xFBF DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF8A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF9E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2319 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xFCB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xF74 JUMP JUMPDEST POP POP PUSH2 0xFE8 PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x8E6 PUSH2 0x187C JUMP JUMPDEST PUSH2 0xFF8 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x1000 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x100B DUP5 DUP5 DUP5 PUSH2 0x2319 JUMP JUMPDEST SWAP1 POP PUSH2 0xFE8 PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x101D PUSH2 0x3C28 JUMP JUMPDEST PUSH2 0x1026 DUP3 PUSH2 0x23BB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x1052 JUMPI DUP1 PUSH1 0x1 JUMPDEST SWAP1 DUP2 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x104A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH2 0xA3F JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x1063 JUMPI DUP1 PUSH1 0x2 PUSH2 0x103D JUMP JUMPDEST DUP2 PUSH1 0xA0 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD LT PUSH2 0x107A JUMPI DUP1 PUSH1 0x5 PUSH2 0x103D JUMP JUMPDEST DUP2 PUSH2 0x100 ADD MLOAD TIMESTAMP LT PUSH2 0x108E JUMPI DUP1 PUSH1 0x4 PUSH2 0x103D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x10B3 JUMPI DUP1 PUSH1 0x6 PUSH2 0x103D JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x60 DUP9 ADD MLOAD SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD GT ISZERO PUSH2 0x10F4 JUMPI DUP1 PUSH1 0x6 PUSH2 0x103D JUMP JUMPDEST PUSH1 0x3 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1115 PUSH1 0x1 SLOAD DUP6 PUSH2 0x23EC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0xA74 DUP5 DUP3 DUP6 PUSH2 0x23FB JUMP JUMPDEST PUSH2 0x112A PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x1135 DUP5 DUP5 DUP5 PUSH2 0x7C6 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x20 ADD MLOAD LT ISZERO PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x1 DUP6 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x2260 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x11C6 JUMPI PUSH2 0x11BE DUP2 PUSH1 0x0 SHL DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1175 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1189 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x119D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x11B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x115B JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11DF SWAP1 PUSH2 0x5231 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11F0 PUSH2 0x3BF4 JUMP JUMPDEST PUSH2 0x11F8 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0xA62 DUP6 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x2173 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1210 PUSH2 0x17F1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0x124B JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1238 PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1230 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0xFDE JUMPI PUSH2 0x129C DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1267 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x127B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x128F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x259F JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12A8 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1251 JUMP JUMPDEST PUSH2 0x12C3 PUSH2 0x1625 JUMP JUMPDEST PUSH2 0x7C3 DUP2 PUSH2 0x1652 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x12DA PUSH2 0x1625 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE25532E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1329 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x134D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4639 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1386 JUMPI PUSH2 0x1386 PUSH2 0x9A7 DUP4 DUP4 PUSH2 0x25D2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE MLOAD PUSH32 0xD2C6B762299C609BDB96520B58A49BFB80186934D4F71A86A367571A15C03194 SWAP1 PUSH2 0x13EA SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH4 0x20C13B0B PUSH1 0xE0 SHL DUP2 JUMP JUMPDEST PUSH2 0x1427 PUSH2 0x17F1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1457 JUMPI PUSH2 0x144F DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1442 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1823 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x142C JUMP JUMPDEST POP POP PUSH2 0x7BB PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x1469 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x1471 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x100B DUP5 DUP5 DUP5 PUSH2 0x259F JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1493 PUSH2 0x1625 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x14B1 JUMPI PUSH2 0x14AC PUSH2 0x9A7 PUSH2 0x2629 JUMP JUMPDEST PUSH2 0x7C3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1506 PUSH2 0x16BB JUMP JUMPDEST ISZERO PUSH2 0x15A3 JUMPI DUP3 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0x1540 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x152B JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x159C JUMPI PUSH2 0x157D DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x155C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1570 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x16CB JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1589 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1546 JUMP JUMPDEST POP POP PUSH2 0x775 JUMP JUMPDEST PUSH2 0x15AB PUSH2 0x17C7 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP2 DUP1 ISZERO PUSH2 0x15E0 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x15CB JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x161B JUMPI PUSH2 0x15FC DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x155C JUMPI INVALID JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1608 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x15E6 JUMP JUMPDEST POP POP PUSH2 0x775 PUSH2 0x17DC JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x731 JUMPI PUSH1 0x0 SLOAD PUSH2 0x731 SWAP1 PUSH2 0x9A7 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2647 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 MLOAD PUSH32 0xE1A5430EBEC577336427F40F15822F1F36C5E3509FF209D6DB9E6C9E6941CB0B SWAP2 PUSH2 0x1691 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x4DC6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x16E4 PUSH1 0x1 SLOAD DUP6 PUSH2 0x227F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x16F1 DUP5 DUP5 DUP4 PUSH2 0x2664 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x1700 DUP2 DUP1 PUSH2 0x271E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x80 DUP8 ADD MLOAD SWAP1 MLOAD PUSH1 0x60 SWAP2 ADDRESS SWAP2 PUSH2 0x1730 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x176B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1770 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1787 JUMPI PUSH2 0x1787 PUSH2 0x9A7 DUP6 DUP4 PUSH2 0x274F JUMP JUMPDEST PUSH2 0x1792 DUP4 PUSH1 0x0 PUSH2 0x271E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH32 0xA4A7329F1DD821363067E07D359E347B4AF9B1EFE4B6CCCF13240228AF3C800D SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT AND PUSH1 0x1 PUSH1 0xA8 SHL OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT AND SWAP1 SSTORE PUSH2 0x731 PUSH2 0x276C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x180E JUMPI PUSH2 0x180E PUSH2 0x9A7 PUSH2 0x27A0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x182B PUSH2 0x3C28 JUMP JUMPDEST PUSH2 0x1834 DUP3 PUSH2 0x1015 JUMP JUMPDEST SWAP1 POP PUSH2 0x1840 DUP3 DUP3 PUSH2 0x27BE JUMP JUMPDEST PUSH1 0x3 DUP2 MLOAD PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x184F JUMPI INVALID JUMPDEST EQ PUSH2 0x185A JUMPI POP PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0xB2E DUP3 DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x2839 JUMP JUMPDEST PUSH2 0x1870 PUSH2 0x16BB JUMP JUMPDEST PUSH2 0x731 JUMPI PUSH2 0x731 PUSH2 0x276C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x18A4 JUMPI PUSH2 0x18A4 PUSH2 0x9A7 PUSH1 0x2 DUP6 DUP6 PUSH2 0x28B7 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x18B2 PUSH2 0x3B9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x4DA26AAB PUSH1 0xE1 SHL SWAP1 PUSH2 0x18D3 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x529D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1924 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x195F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1964 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x1991 JUMPI DUP1 MLOAD PUSH1 0xA0 EQ PUSH2 0x197A JUMPI INVALID JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x198E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4657 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x19A3 PUSH2 0x3B9D JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH2 0x19B6 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH2 0x19D1 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH2 0x19EF SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH2 0x1A0D SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH2 0x1A2B SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 DUP2 ISZERO PUSH2 0x1A52 JUMPI DUP2 PUSH2 0x1A54 JUMP JUMPDEST CALLER JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x4AD31275 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DE1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH2 0x1AC5 PUSH2 0x3BCC JUMP JUMPDEST DUP6 MLOAD PUSH2 0x1AD8 JUMPI PUSH2 0x1AD8 PUSH2 0x9A7 PUSH1 0x0 PUSH2 0x28F2 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x1AEB JUMPI PUSH2 0x1AEB PUSH2 0x9A7 PUSH1 0x1 PUSH2 0x28F2 JUMP JUMPDEST DUP4 MLOAD DUP7 MLOAD EQ PUSH2 0x1B01 JUMPI PUSH2 0x1B01 PUSH2 0x9A7 PUSH1 0x2 PUSH2 0x28F2 JUMP JUMPDEST DUP3 MLOAD DUP6 MLOAD EQ PUSH2 0x1B17 JUMPI PUSH2 0x1B17 PUSH2 0x9A7 PUSH1 0x3 PUSH2 0x28F2 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1B52 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1B3F PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B37 JUMPI SWAP1 POP JUMPDEST POP DUP2 MSTORE DUP5 MLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE SWAP1 DUP1 ISZERO PUSH2 0x1B90 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1B7D PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B75 JUMPI SWAP1 POP JUMPDEST POP PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP1 PUSH2 0x1BA1 PUSH2 0x3C4A JUMP JUMPDEST DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1BAE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1BC0 PUSH2 0x3C4A JUMP JUMPDEST DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1BCD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1BE2 DUP4 PUSH2 0x23BB JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x1BF0 DUP4 PUSH2 0x23BB JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1BFB PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x1C03 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x1C0B PUSH2 0x3BF4 JUMP JUMPDEST PUSH2 0x1C3E DUP8 DUP8 DUP16 DUP13 DUP2 MLOAD DUP2 LT PUSH2 0x1C1C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP16 DUP13 DUP2 MLOAD DUP2 LT PUSH2 0x1C30 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP16 PUSH2 0x2173 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x1C58 SWAP1 DUP7 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST SWAP5 POP PUSH2 0x1C75 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP6 PUSH2 0x28D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP PUSH2 0x1C85 DUP4 DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x199B JUMP JUMPDEST SWAP3 POP PUSH2 0x1C95 DUP3 DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x199B JUMP JUMPDEST SWAP2 POP PUSH2 0x1CB2 DUP2 PUSH1 0x40 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD PUSH2 0x28D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP12 ADD MLOAD PUSH2 0x1CD0 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0xA0 DUP8 ADD MLOAD DUP6 LT PUSH2 0x1D7B JUMPI DUP10 MLOAD DUP1 MLOAD PUSH1 0x1 DUP12 ADD SWAP11 DUP6 SWAP3 SWAP2 DUP2 LT PUSH2 0x1CF4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP DUP15 MLOAD DUP10 EQ ISZERO PUSH2 0x1D58 JUMPI DUP2 DUP11 PUSH1 0x20 ADD MLOAD DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x1D47 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP PUSH2 0x1E19 JUMP JUMPDEST DUP15 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x1D64 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP7 POP PUSH2 0x1D77 DUP8 PUSH2 0x23BB JUMP JUMPDEST SWAP6 POP POP JUMPDEST DUP6 PUSH1 0xA0 ADD MLOAD DUP5 LT PUSH2 0x1E13 JUMPI DUP2 DUP11 PUSH1 0x20 ADD MLOAD DUP10 DUP1 PUSH1 0x1 ADD SWAP11 POP DUP2 MLOAD DUP2 LT PUSH2 0x1D9D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP2 POP DUP14 MLOAD DUP9 EQ ISZERO PUSH2 0x1DF0 JUMPI DUP3 DUP11 PUSH1 0x0 ADD MLOAD DUP11 DUP2 MLOAD DUP2 LT PUSH2 0x1D47 JUMPI INVALID JUMPDEST DUP14 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x1DFC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP6 POP PUSH2 0x1E0F DUP7 PUSH2 0x23BB JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP PUSH2 0x1C03 JUMP JUMPDEST POP POP POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP4 PUSH2 0x1E60 PUSH2 0x1E44 DUP3 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST PUSH2 0x1E54 DUP9 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2977 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E79 DUP5 DUP5 DUP5 PUSH2 0x29A1 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1E99 JUMPI PUSH2 0x1E99 PUSH2 0x9A7 PUSH1 0x6 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x8 DUP2 DUP2 DUP2 GT ISZERO PUSH2 0x1EA6 JUMPI INVALID JUMPDEST PUSH1 0xFF AND LT PUSH2 0x1EBE JUMPI PUSH2 0x1EBE PUSH2 0x9A7 PUSH1 0x3 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x1ECC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x4 DUP7 DUP7 DUP7 JUMPDEST PUSH1 0x60 PUSH4 0x7E5A2318 PUSH1 0xE0 SHL DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1EFF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x51E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x1F4B JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1F72 JUMPI DUP2 MLOAD PUSH1 0x1 EQ PUSH2 0x1F6A JUMPI PUSH2 0x1F6A PUSH2 0x9A7 PUSH1 0x2 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xA74 JUMP JUMPDEST PUSH1 0x2 DUP6 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x1F80 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x204E JUMPI DUP2 MLOAD PUSH1 0x42 EQ PUSH2 0x1F9F JUMPI PUSH2 0x1F9F PUSH2 0x9A7 PUSH1 0x2 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1FAE JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x0 PUSH2 0x1FCB DUP5 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x29E0 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FE0 DUP6 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x29E0 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP9 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x2007 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FB6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2029 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP2 AND EQ SWAP6 POP PUSH2 0xA74 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP6 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x205C JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2109 JUMPI DUP2 MLOAD PUSH1 0x42 EQ PUSH2 0x207B JUMPI PUSH2 0x207B PUSH2 0x9A7 PUSH1 0x2 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x208A JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x0 PUSH2 0x20A7 DUP5 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x29E0 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x20BC DUP6 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x29E0 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x20D3 SWAP2 SWAP1 PUSH2 0x4D98 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x2007 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FB6 JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x2117 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x212F JUMPI PUSH2 0x2128 DUP5 DUP5 DUP5 PUSH2 0x2A0A JUMP JUMPDEST SWAP1 POP PUSH2 0xA74 JUMP JUMPDEST PUSH1 0x6 DUP6 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x213D JUMPI INVALID JUMPDEST EQ PUSH2 0x2144 JUMPI INVALID JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x217B PUSH2 0x3BF4 JUMP JUMPDEST PUSH2 0x160 DUP1 DUP8 ADD MLOAD PUSH2 0x140 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP8 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH2 0x219B PUSH2 0x3C28 JUMP JUMPDEST PUSH2 0x21A4 DUP8 PUSH2 0x1015 JUMP JUMPDEST SWAP1 POP PUSH2 0x21AE PUSH2 0x3C28 JUMP JUMPDEST PUSH2 0x21B7 DUP8 PUSH2 0x1015 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x21C3 PUSH2 0x1A36 JUMP JUMPDEST SWAP1 POP PUSH2 0x21D1 DUP10 DUP5 DUP4 DUP11 PUSH2 0x2B43 JUMP JUMPDEST PUSH2 0x21DD DUP9 DUP4 DUP4 DUP10 PUSH2 0x2B43 JUMP JUMPDEST PUSH2 0x21F1 DUP10 DUP10 DUP6 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x2C1A JUMP JUMPDEST PUSH2 0x220A DUP10 DUP10 DUP6 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x3 SLOAD GASPRICE DUP12 PUSH2 0x2C5F JUMP JUMPDEST SWAP4 POP PUSH2 0x2225 DUP10 DUP3 DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x0 ADD MLOAD PUSH2 0x2DB4 JUMP JUMPDEST PUSH2 0x223E DUP9 DUP3 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD PUSH2 0x2DB4 JUMP JUMPDEST PUSH2 0x2254 DUP4 PUSH1 0x20 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP12 DUP12 DUP6 DUP10 PUSH2 0x2E78 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH4 0x18E4B141 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x51CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E6 DUP3 PUSH2 0x228E DUP6 PUSH2 0x3005 JUMP JUMPDEST PUSH2 0x3080 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 PUSH2 0x22A7 DUP6 DUP4 DUP7 PUSH2 0x1E6C JUMP JUMPDEST SWAP1 POP PUSH1 0x5 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x22B7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x22D9 JUMPI PUSH2 0x22D2 PUSH2 0x22CA DUP8 DUP8 PUSH2 0x309F JUMP JUMPDEST DUP7 DUP5 DUP8 PUSH2 0x30BE JUMP JUMPDEST SWAP3 POP PUSH2 0x2310 JUMP JUMPDEST PUSH1 0x7 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x22E7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2301 JUMPI PUSH2 0x22D2 PUSH2 0x22FA DUP8 DUP8 PUSH2 0x309F JUMP JUMPDEST DUP4 DUP7 PUSH2 0x3147 JUMP JUMPDEST PUSH2 0x230D DUP2 DUP7 DUP5 DUP8 PUSH2 0x1F3B JUMP JUMPDEST SWAP3 POP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2321 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x2329 PUSH2 0x3C28 JUMP JUMPDEST PUSH2 0x2332 DUP6 PUSH2 0x1015 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x233E PUSH2 0x1A36 JUMP JUMPDEST SWAP1 POP PUSH2 0x234C DUP7 DUP4 DUP4 DUP8 PUSH2 0x2B43 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2369 DUP4 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD PUSH2 0x188B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2377 DUP8 DUP4 PUSH2 0x3156 JUMP JUMPDEST SWAP1 POP PUSH2 0x2387 DUP9 DUP3 PUSH1 0x3 SLOAD GASPRICE PUSH2 0x316C JUMP JUMPDEST SWAP5 POP PUSH1 0x0 DUP5 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x23A3 DUP10 DUP6 DUP4 DUP9 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x2DB4 JUMP JUMPDEST PUSH2 0x23AF DUP2 DUP11 DUP7 DUP10 PUSH2 0x31E3 JUMP JUMPDEST POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23D3 PUSH1 0x1 SLOAD DUP5 PUSH2 0x23EC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP3 POP SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E6 DUP3 PUSH2 0x228E DUP6 PUSH2 0x327A JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 DUP2 PUSH2 0x240C DUP6 DUP4 DUP7 PUSH2 0x1E6C JUMP JUMPDEST SWAP1 POP PUSH1 0x5 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x241C JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x242F JUMPI PUSH2 0x22D2 PUSH2 0x22CA DUP8 DUP8 PUSH2 0x3333 JUMP JUMPDEST PUSH1 0x7 DUP2 PUSH1 0x8 DUP2 GT ISZERO PUSH2 0x243D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2301 JUMPI PUSH2 0x22D2 PUSH2 0x22FA DUP8 DUP8 PUSH2 0x3333 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2598 JUMPI PUSH1 0x20 DUP5 MLOAD DUP2 PUSH2 0x2461 JUMPI INVALID JUMPDEST MOD PUSH1 0x4 EQ PUSH2 0x2478 JUMPI PUSH2 0x2478 PUSH2 0x9A7 PUSH1 0x0 DUP8 DUP8 PUSH2 0x3352 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x248A DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x3371 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x24C4 JUMPI PUSH2 0x24C4 PUSH2 0x9A7 PUSH1 0x1 DUP10 DUP10 PUSH2 0x3352 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x2A179679 PUSH1 0xE2 SHL SWAP1 PUSH2 0x24E7 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x24 ADD PUSH2 0x5018 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2538 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2575 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x257A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2592 JUMPI PUSH2 0x2592 PUSH2 0x9A7 DUP12 DUP12 DUP5 PUSH2 0x33A5 JUMP JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x25A7 PUSH2 0x3B9D JUMP JUMPDEST PUSH2 0x25B2 DUP5 DUP5 DUP5 PUSH2 0x2319 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x20 ADD MLOAD EQ PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x2 DUP6 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x2260 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x11C7B720 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4DC6 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD TIMESTAMP LT PUSH2 0x267D JUMPI PUSH2 0x267D PUSH2 0x9A7 PUSH1 0x1 DUP4 PUSH2 0x33C4 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD GASPRICE DUP2 EQ PUSH2 0x2697 JUMPI PUSH2 0x2697 PUSH2 0x9A7 DUP4 GASPRICE DUP5 PUSH2 0x33E1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x26B6 JUMPI PUSH2 0x26B6 PUSH2 0x9A7 DUP5 DUP4 PUSH2 0x3400 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x26DB JUMPI PUSH2 0x26DB PUSH2 0x9A7 PUSH1 0x0 DUP6 PUSH2 0x33C4 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x2701 JUMPI POP PUSH2 0x26FF DUP7 DUP6 DUP8 PUSH2 0x2293 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x2716 JUMPI PUSH2 0x2716 PUSH2 0x9A7 PUSH1 0x1 DUP7 DUP5 DUP10 PUSH2 0x1EDE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ PUSH2 0xB2E JUMPI PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x60 PUSH4 0x20D11F61 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4EE5 JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xB2E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0xC3B823F PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x27F8 JUMPI PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x27F8 JUMPI PUSH2 0x27F8 PUSH2 0x9A7 PUSH1 0x2 DUP4 PUSH1 0x20 ADD MLOAD CALLER PUSH2 0x341D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2802 PUSH2 0x1A36 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2834 JUMPI PUSH2 0x2834 PUSH2 0x9A7 PUSH1 0x0 DUP5 PUSH1 0x20 ADD MLOAD DUP5 PUSH2 0x341D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP3 DUP2 ADD MLOAD DUP4 MLOAD PUSH2 0x140 DUP6 ADD MLOAD PUSH2 0x160 DUP7 ADD MLOAD SWAP4 MLOAD DUP6 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 SWAP4 SWAP1 SWAP4 AND SWAP3 PUSH32 0x2C310A9A43963FF31A754A4099CC435ED498049687539D72D7818D9B093415C SWAP3 PUSH2 0x28AB SWAP3 SWAP1 SWAP2 SWAP1 CALLER SWAP1 PUSH2 0x506A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH4 0xE946C1BB PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5197 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x0 DUP7 DUP7 PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xD4092F4F PUSH1 0xE0 SHL DUP3 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x290D SWAP2 SWAP1 PUSH2 0x5189 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2955 JUMPI POP PUSH1 0x0 PUSH2 0x775 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2962 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x8E6 JUMPI PUSH2 0x8E6 PUSH2 0x9A7 PUSH1 0x1 DUP7 DUP7 PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x298D JUMPI PUSH2 0x298D PUSH2 0x9A7 PUSH1 0x3 DUP6 DUP6 PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x2998 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x29BD JUMPI PUSH2 0x29BD PUSH2 0x9A7 PUSH1 0x2 DUP7 DUP7 DUP7 PUSH2 0x1EDE JUMP JUMPDEST DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x29CD JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR PUSH1 0x8 DUP2 GT ISZERO PUSH2 0xA74 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO PUSH2 0x2A01 JUMPI PUSH2 0x2A01 PUSH2 0x9A7 PUSH1 0x5 DUP6 MLOAD DUP6 PUSH1 0x20 ADD PUSH2 0x343C JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2A23 DUP4 PUSH1 0x0 NOT DUP4 ADD PUSH4 0xFFFFFFFF PUSH2 0x345B AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 PUSH2 0x2A42 SWAP1 DUP9 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x4EE5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP PUSH2 0x2A86 DUP5 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x345B AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2AA2 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2ADD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2AE2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2AF5 JUMPI POP DUP1 MLOAD PUSH1 0x20 EQ JUMPDEST ISZERO PUSH2 0x2B29 JUMPI PUSH4 0xB0671381 PUSH1 0xE0 SHL PUSH2 0x2B13 DUP3 PUSH1 0x0 PUSH4 0xFFFFFFFF PUSH2 0x3371 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ SWAP5 POP POP POP POP POP PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x2B38 PUSH2 0x9A7 DUP10 DUP10 DUP10 DUP6 PUSH2 0x345F JUMP JUMPDEST POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP4 MLOAD PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x2B52 JUMPI INVALID JUMPDEST EQ PUSH2 0x2B6C JUMPI PUSH2 0x2B6C PUSH2 0x9A7 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x3480 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2BA6 JUMPI PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2BA6 JUMPI PUSH2 0x2BA6 PUSH2 0x9A7 PUSH1 0x2 DUP6 PUSH1 0x20 ADD MLOAD CALLER PUSH2 0x341D JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2BE9 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2BE9 JUMPI PUSH2 0x2BE9 PUSH2 0x9A7 PUSH1 0x1 DUP6 PUSH1 0x20 ADD MLOAD DUP6 PUSH2 0x341D JUMP JUMPDEST PUSH2 0x2BF8 DUP5 DUP5 PUSH1 0x20 ADD MLOAD DUP4 PUSH2 0x23FB JUMP JUMPDEST PUSH2 0x2C14 JUMPI PUSH2 0x2C14 PUSH2 0x9A7 PUSH1 0x0 DUP6 PUSH1 0x20 ADD MLOAD DUP8 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x1EDE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MLOAD PUSH2 0x2C33 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST PUSH1 0x80 DUP1 DUP6 ADD MLOAD SWAP1 DUP7 ADD MLOAD PUSH2 0x2C4C SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST LT ISZERO PUSH2 0x2C14 JUMPI PUSH2 0x2C14 PUSH2 0x9A7 DUP4 DUP4 PUSH2 0x349D JUMP JUMPDEST PUSH2 0x2C67 PUSH2 0x3BF4 JUMP JUMPDEST PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2C7F SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C96 DUP11 PUSH1 0x80 ADD MLOAD DUP12 PUSH1 0xA0 ADD MLOAD DUP5 PUSH2 0x34BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CB1 DUP9 DUP12 PUSH1 0xA0 ADD MLOAD PUSH2 0x188B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CC8 DUP12 PUSH1 0x80 ADD MLOAD DUP13 PUSH1 0xA0 ADD MLOAD DUP5 PUSH2 0x34BA JUMP JUMPDEST SWAP1 POP DUP6 ISZERO PUSH2 0x2CE5 JUMPI PUSH2 0x2CDE DUP13 DUP13 DUP6 DUP8 DUP6 DUP8 PUSH2 0x34EE JUMP JUMPDEST SWAP5 POP PUSH2 0x2CF6 JUMP JUMPDEST PUSH2 0x2CF3 DUP13 DUP13 DUP6 DUP8 DUP6 DUP8 PUSH2 0x35C0 JUMP JUMPDEST SWAP5 POP JUMPDEST DUP5 MLOAD MLOAD PUSH1 0x80 DUP14 ADD MLOAD PUSH1 0xC0 DUP15 ADD MLOAD PUSH2 0x2D0E SWAP3 SWAP2 SWAP1 PUSH2 0x34BA JUMP JUMPDEST DUP6 MLOAD PUSH1 0x40 ADD MSTORE DUP5 MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0xA0 DUP14 ADD MLOAD PUSH1 0xE0 DUP15 ADD MLOAD PUSH2 0x2D2F SWAP3 SWAP2 SWAP1 PUSH2 0x34BA JUMP JUMPDEST DUP6 MLOAD PUSH1 0x60 ADD MSTORE PUSH1 0x20 DUP6 ADD MLOAD MLOAD PUSH1 0x80 DUP13 ADD MLOAD PUSH1 0xC0 DUP14 ADD MLOAD PUSH2 0x2D50 SWAP3 SWAP2 SWAP1 PUSH2 0x34BA JUMP JUMPDEST DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x2D78 DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP13 PUSH1 0xA0 ADD MLOAD DUP14 PUSH1 0xE0 ADD MLOAD PUSH2 0x34BA JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 ADD MSTORE PUSH1 0x0 PUSH2 0x2D93 DUP9 DUP11 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST DUP7 MLOAD PUSH1 0x80 SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x20 DUP9 ADD MLOAD ADD MSTORE POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x2DCA SWAP1 DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x28D6 AND JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6869791F0A34781B29882982CC39E882768CF2C96995C2A110C577C53BC932D5 DUP9 PUSH2 0x140 ADD MLOAD DUP10 PUSH2 0x160 ADD MLOAD DUP11 PUSH2 0x180 ADD MLOAD DUP12 PUSH2 0x1A0 ADD MLOAD DUP12 CALLER DUP11 PUSH1 0x0 ADD MLOAD DUP12 PUSH1 0x20 ADD MLOAD DUP13 PUSH1 0x40 ADD MLOAD DUP14 PUSH1 0x60 ADD MLOAD DUP15 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x2E69 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x509E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST DUP4 MLOAD DUP4 MLOAD PUSH1 0x40 DUP1 DUP8 ADD MLOAD SWAP1 DUP7 ADD MLOAD PUSH2 0x140 DUP8 ADD MLOAD DUP6 MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2EA1 SWAP2 DUP12 SWAP2 DUP7 SWAP1 DUP9 SWAP1 PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2EBB DUP11 DUP10 PUSH2 0x140 ADD MLOAD DUP7 DUP7 DUP10 PUSH1 0x20 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2ED5 DUP10 DUP9 PUSH2 0x180 ADD MLOAD DUP6 DUP5 DUP10 PUSH1 0x20 ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2EEF DUP11 DUP10 PUSH2 0x180 ADD MLOAD DUP7 DUP6 DUP10 PUSH1 0x0 ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2F05 DUP11 DUP10 PUSH2 0x140 ADD MLOAD DUP7 DUP10 DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2F1B DUP10 DUP9 PUSH2 0x140 ADD MLOAD DUP6 DUP10 DUP10 PUSH1 0x60 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F33 DUP12 DUP12 DUP9 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD DUP9 DUP9 DUP13 PUSH2 0x3659 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2F50 JUMPI DUP6 MLOAD PUSH1 0x0 PUSH1 0x80 SWAP2 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP9 ADD MLOAD SWAP1 SWAP2 ADD MSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x2F86 JUMPI POP PUSH2 0x1A0 DUP1 DUP10 ADD MLOAD SWAP1 DUP11 ADD MLOAD PUSH2 0x2F86 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x36A8 AND JUMP JUMPDEST ISZERO PUSH2 0x2FC4 JUMPI PUSH2 0x2FBF DUP12 DUP11 PUSH2 0x1A0 ADD MLOAD DUP10 DUP7 PUSH2 0x2FBA DUP12 PUSH1 0x20 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP13 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH2 0x28D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2FF8 JUMP JUMPDEST PUSH2 0x2FDE DUP11 DUP10 PUSH2 0x1A0 ADD MLOAD DUP10 DUP6 DUP11 PUSH1 0x20 ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x2FF8 DUP12 DUP11 PUSH2 0x1A0 ADD MLOAD DUP10 DUP7 DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 DUP2 ADD MLOAD DUP3 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x40 DUP1 DUP8 ADD MLOAD PUSH1 0x60 SWAP8 DUP9 ADD MLOAD DUP7 MLOAD SWAP7 DUP6 ADD SWAP7 SWAP1 SWAP7 KECCAK256 DUP3 MLOAD PUSH32 0xEC69816980A3A3CA4554410E60253953E9FF375BA4536A98ADFA15CC71541508 DUP2 MSTORE SWAP5 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x37811F6D PUSH1 0xE2 SHL SWAP1 PUSH2 0x25EF SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x24 ADD PUSH2 0x52BD JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x15 DUP2 LT ISZERO PUSH2 0x30DC JUMPI PUSH2 0x30DC PUSH2 0x9A7 PUSH1 0x2 DUP8 DUP8 DUP8 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30F2 DUP5 PUSH1 0x14 NOT DUP5 ADD PUSH4 0xFFFFFFFF PUSH2 0x36CD AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0x312F JUMPI PUSH2 0x312F PUSH2 0x9A7 DUP7 DUP4 PUSH2 0x3700 JUMP JUMPDEST PUSH2 0x313C DUP2 DUP9 DUP7 PUSH1 0x15 PUSH2 0x371D JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP4 DUP6 DUP5 PUSH1 0x1 PUSH2 0x371D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x3165 JUMPI DUP2 PUSH2 0x8E6 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3174 PUSH2 0x3B9D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x3190 SWAP2 DUP7 SWAP2 PUSH2 0x34BA JUMP JUMPDEST DUP2 MSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x31A7 SWAP2 DUP7 SWAP2 PUSH2 0x34BA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0xE0 DUP7 ADD MLOAD PUSH2 0x31C1 SWAP2 DUP7 SWAP2 PUSH2 0x34BA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x31D6 DUP3 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x31FD DUP5 DUP5 PUSH2 0x160 ADD MLOAD DUP5 DUP7 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x3217 DUP5 DUP5 PUSH2 0x140 ADD MLOAD DUP6 PUSH1 0x0 ADD MLOAD DUP6 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x3231 DUP5 DUP5 PUSH2 0x1A0 ADD MLOAD DUP5 DUP7 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH2 0x324F DUP5 DUP5 PUSH2 0x180 ADD MLOAD DUP6 PUSH1 0x0 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x2450 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3265 DUP6 DUP4 PUSH1 0x80 ADD MLOAD DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x3855 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2598 JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 ADD MSTORE POP POP POP POP POP JUMP JUMPDEST PUSH2 0x140 DUP2 ADD MLOAD PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x180 DUP4 ADD MLOAD PUSH2 0x1A0 DUP5 ADD MLOAD PUSH1 0x0 SWAP4 PUSH32 0xF80322EB8376AAFB64EADF8F0D7623F22130FD9491A221E902B713CB984A7534 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP8 LT ISZERO PUSH2 0x32C6 JUMPI INVALID JUMPDEST PUSH1 0x1F NOT DUP8 ADD DUP1 MLOAD PUSH2 0x140 DUP10 ADD DUP1 MLOAD PUSH2 0x160 DUP12 ADD DUP1 MLOAD PUSH2 0x180 DUP14 ADD DUP1 MLOAD PUSH2 0x1A0 DUP16 ADD DUP1 MLOAD SWAP14 DUP10 MSTORE DUP13 MLOAD PUSH1 0x20 SWAP14 DUP15 ADD KECCAK256 DUP8 MSTORE DUP12 MLOAD SWAP12 DUP14 ADD SWAP12 SWAP1 SWAP12 KECCAK256 DUP5 MSTORE DUP10 MLOAD SWAP10 DUP13 ADD SWAP10 SWAP1 SWAP10 KECCAK256 DUP2 MSTORE DUP8 MLOAD SWAP8 SWAP1 SWAP11 ADD SWAP7 SWAP1 SWAP7 KECCAK256 DUP9 MSTORE PUSH2 0x1E0 DUP6 KECCAK256 SWAP4 SWAP1 SWAP5 MSTORE SWAP1 MSTORE SWAP2 SWAP1 MSTORE SWAP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x7DFCA19 PUSH1 0xE3 SHL SWAP1 PUSH2 0x25EF SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x24 ADD PUSH2 0x527D JUMP JUMPDEST PUSH1 0x60 PUSH4 0x488219A6 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x515C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 ADD DUP4 MLOAD LT ISZERO PUSH2 0x3392 JUMPI PUSH2 0x3392 PUSH2 0x9A7 PUSH1 0x3 DUP6 MLOAD DUP6 PUSH1 0x4 ADD PUSH2 0x343C JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x4678472B PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F05 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xF5985184 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x5223 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xA26DAC09 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F9B JUMP JUMPDEST PUSH1 0x60 PUSH4 0xDEC4AEDF PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4E8F JUMP JUMPDEST PUSH1 0x60 PUSH4 0xE53C76C8 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x51A5 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x28006595 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x51DB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x60 PUSH4 0x1B8388F7 PUSH1 0xE0 SHL DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1EFF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E9D JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFDB6CA8D PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4F39 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xB6555D6F PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4ECA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34C7 DUP5 DUP5 DUP5 PUSH2 0x388D JUMP JUMPDEST ISZERO PUSH2 0x34DA JUMPI PUSH2 0x34DA PUSH2 0x9A7 DUP6 DUP6 DUP6 PUSH2 0x38F3 JUMP JUMPDEST PUSH2 0xA74 DUP4 PUSH2 0x1E60 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST PUSH2 0x34F6 PUSH2 0x3BF4 JUMP JUMPDEST DUP2 DUP6 GT DUP5 DUP5 GT DUP5 DUP7 GT ISZERO PUSH2 0x3516 JUMPI PUSH2 0x350F DUP10 DUP7 DUP7 PUSH2 0x3912 JUMP JUMPDEST SWAP3 POP PUSH2 0x3565 JUMP JUMPDEST DUP7 DUP5 GT ISZERO PUSH2 0x3556 JUMPI DUP3 MLOAD DUP8 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x20 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD PUSH2 0x3540 SWAP2 SWAP1 DUP10 PUSH2 0x34BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP6 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 MLOAD ADD DUP8 SWAP1 MSTORE PUSH2 0x3565 JUMP JUMPDEST PUSH2 0x3562 DUP8 DUP8 DUP8 DUP8 PUSH2 0x394F JUMP JUMPDEST SWAP3 POP JUMPDEST DUP2 ISZERO PUSH2 0x358B JUMPI PUSH1 0x20 DUP1 DUP5 ADD MLOAD ADD MLOAD DUP4 MLOAD MLOAD PUSH2 0x3585 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE JUMPDEST DUP1 ISZERO PUSH2 0x35B3 JUMPI DUP3 MLOAD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD SWAP1 DUP5 ADD MLOAD MLOAD PUSH2 0x35AD SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MSTORE JUMPDEST POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x35C8 PUSH2 0x3BF4 JUMP JUMPDEST DUP3 DUP5 GT ISZERO PUSH2 0x35E2 JUMPI PUSH2 0x35DB DUP8 DUP5 DUP5 PUSH2 0x3912 JUMP JUMPDEST SWAP1 POP PUSH2 0x3630 JUMP JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0x3621 JUMPI DUP1 MLOAD DUP6 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 ADD MLOAD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH2 0x3614 SWAP2 SWAP1 DUP7 PUSH2 0x397A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD ADD MSTORE PUSH2 0x3630 JUMP JUMPDEST PUSH2 0x362D DUP6 DUP6 DUP6 DUP6 PUSH2 0x394F JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD ADD MLOAD DUP2 MLOAD MLOAD PUSH2 0x364A SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x369E JUMPI SELFBALANCE PUSH1 0x0 PUSH2 0x367F DUP11 DUP5 DUP5 DUP12 DUP12 DUP11 PUSH2 0x39B2 JUMP JUMPDEST SWAP1 POP PUSH2 0x3691 DUP10 DUP5 DUP4 DUP6 SUB DUP12 DUP11 DUP11 PUSH2 0x39B2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0x35B6 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x35B6 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0x8E6 JUMPI POP POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 KECCAK256 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0x36EE JUMPI PUSH2 0x36EE PUSH2 0x9A7 PUSH1 0x4 DUP6 MLOAD DUP6 PUSH1 0x14 ADD PUSH2 0x343C JUMP JUMPDEST POP ADD PUSH1 0x14 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xA15C0D06 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x25EF SWAP3 SWAP2 SWAP1 PUSH2 0x4DC6 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3734 DUP5 DUP5 DUP4 SUB PUSH4 0xFFFFFFFF PUSH2 0x345B AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x20C13B0B PUSH1 0xE0 SHL SWAP1 PUSH2 0x3753 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x5045 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP PUSH2 0x3797 DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x345B AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x37B3 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x37EE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x37F3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3806 JUMPI POP DUP1 MLOAD PUSH1 0x20 EQ JUMPDEST ISZERO PUSH2 0x383A JUMPI PUSH4 0x20C13B0B PUSH1 0xE0 SHL PUSH2 0x3824 DUP3 PUSH1 0x0 PUSH4 0xFFFFFFFF PUSH2 0x3371 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ SWAP5 POP POP POP POP POP PUSH2 0xA74 JUMP JUMPDEST PUSH2 0x3849 PUSH2 0x9A7 DUP11 DUP11 DUP11 DUP6 PUSH2 0x3A9A JUMP JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x3883 JUMPI PUSH2 0x3878 DUP7 DUP3 SELFBALANCE DUP9 DUP9 DUP9 PUSH2 0x39B2 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP POP PUSH2 0xA74 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xA74 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x389F JUMPI PUSH2 0x389F PUSH2 0x9A7 PUSH2 0x3ABB JUMP JUMPDEST DUP2 ISZERO DUP1 PUSH2 0x38AA JUMPI POP DUP4 ISZERO JUMPDEST ISZERO PUSH2 0x38B7 JUMPI POP PUSH1 0x0 PUSH2 0x8E6 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP1 PUSH2 0x38C1 JUMPI INVALID JUMPDEST DUP6 DUP5 MULMOD SWAP1 POP PUSH2 0x38D6 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST PUSH2 0x38E8 DUP3 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST LT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH4 0x339F3DE2 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A7A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F9B JUMP JUMPDEST PUSH2 0x391A PUSH2 0x3BF4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD DUP6 SWAP1 MSTORE MLOAD DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH2 0x3945 SWAP2 SWAP1 DUP6 PUSH2 0x34BA JUMP JUMPDEST DUP2 MLOAD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3957 PUSH2 0x3BF4 JUMP JUMPDEST DUP1 MLOAD SWAP5 SWAP1 SWAP5 MSTORE DUP4 MLOAD PUSH1 0x20 SWAP1 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP5 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 MLOAD SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 DUP5 PUSH2 0x3AD9 JUMP JUMPDEST ISZERO PUSH2 0x399A JUMPI PUSH2 0x399A PUSH2 0x9A7 DUP6 DUP6 DUP6 PUSH2 0x38F3 JUMP JUMPDEST PUSH2 0xA74 DUP4 PUSH2 0x1E60 PUSH2 0x1E44 DUP3 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 LT PUSH2 0x39BE JUMPI POP DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0xA3B4A327 PUSH1 0xE0 SHL SWAP1 PUSH2 0x39DF SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP10 SWAP1 PUSH1 0x24 ADD PUSH2 0x4DE1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x3A31 SWAP2 SWAP1 PUSH2 0x4D8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3A6E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A73 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3A8D JUMPI PUSH2 0x3A8D PUSH2 0x9A7 DUP12 DUP10 DUP10 DUP10 DUP7 PUSH2 0x3B3D JUMP JUMPDEST POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH4 0x5BD0428D PUSH1 0xE0 SHL DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1EFF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x29E460DF PUSH1 0xE2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3AEB JUMPI PUSH2 0x3AEB PUSH2 0x9A7 PUSH2 0x3ABB JUMP JUMPDEST DUP2 ISZERO DUP1 PUSH2 0x3AF6 JUMPI POP DUP4 ISZERO JUMPDEST ISZERO PUSH2 0x3B03 JUMPI POP PUSH1 0x0 PUSH2 0x8E6 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP1 PUSH2 0x3B0D JUMPI INVALID JUMPDEST DUP6 DUP5 MULMOD SWAP1 POP DUP4 PUSH2 0x3B23 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x188B AND JUMP JUMPDEST DUP2 PUSH2 0x3B2A JUMPI INVALID JUMPDEST MOD SWAP1 POP PUSH2 0x38D6 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2946 AND JUMP JUMPDEST PUSH1 0x60 PUSH4 0x87CB1E75 PUSH1 0xE0 SHL DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3B60 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3C07 PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3C14 PUSH2 0x3B9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1C0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x775 DUP2 PUSH2 0x5473 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3CF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3D0C PUSH2 0x3D07 DUP3 PUSH2 0x52F4 JUMP JUMPDEST PUSH2 0x52CE JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x3D31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D5D JUMPI DUP2 PUSH2 0x3D47 DUP9 DUP3 PUSH2 0x3CDD JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3D34 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3D78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3D86 PUSH2 0x3D07 DUP3 PUSH2 0x52F4 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D5D JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x3DAE DUP9 DUP3 PUSH2 0x3F1A JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3D98 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3DD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3DE3 PUSH2 0x3D07 DUP3 PUSH2 0x52F4 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D5D JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x3E0B DUP9 DUP3 PUSH2 0x3FEC JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3DF5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3E40 PUSH2 0x3D07 DUP3 PUSH2 0x52F4 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D5D JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x3E68 DUP9 DUP3 PUSH2 0x418D JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3E52 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3E9D PUSH2 0x3D07 DUP3 PUSH2 0x52F4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x3EC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D5D JUMPI DUP2 PUSH2 0x3ED8 DUP9 DUP3 PUSH2 0x3EF9 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3EC5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x775 DUP2 PUSH2 0x5487 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x775 DUP2 PUSH2 0x5490 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x775 DUP2 PUSH2 0x5499 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x775 DUP2 PUSH2 0x5499 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3F2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3F39 PUSH2 0x3D07 DUP3 PUSH2 0x5314 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x3F55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F60 DUP4 DUP3 DUP5 PUSH2 0x53FF JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F85 PUSH1 0xA0 PUSH2 0x52CE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F93 DUP5 DUP5 PUSH2 0x421B JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x3FA4 DUP5 DUP5 DUP4 ADD PUSH2 0x421B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x3FB8 DUP5 DUP3 DUP6 ADD PUSH2 0x421B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x3FCC DUP5 DUP3 DUP6 ADD PUSH2 0x421B JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x3FE0 DUP5 DUP3 DUP6 ADD PUSH2 0x421B JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x400A PUSH2 0x1C0 PUSH2 0x52CE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4018 DUP5 DUP5 PUSH2 0x3CDD JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x4029 DUP5 DUP5 DUP4 ADD PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x403D DUP5 DUP3 DUP6 ADD PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x4051 DUP5 DUP3 DUP6 ADD PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x4065 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x4079 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x408D DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x40A1 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x40B6 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x40CC DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x40ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x40F9 DUP5 DUP3 DUP6 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x411A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4126 DUP5 DUP3 DUP6 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP PUSH2 0x180 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4153 DUP5 DUP3 DUP6 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH2 0x180 DUP4 ADD MSTORE POP PUSH2 0x1A0 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4180 DUP5 DUP3 DUP6 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH2 0x1A0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x419F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41A9 PUSH1 0xA0 PUSH2 0x52CE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x41B7 DUP5 DUP5 PUSH2 0x3EF9 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x41C8 DUP5 DUP5 DUP4 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x41DC DUP5 DUP3 DUP6 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x41F0 DUP5 DUP3 DUP6 ADD PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x420F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FE0 DUP5 DUP3 DUP6 ADD PUSH2 0x3F1A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x775 DUP2 PUSH2 0x5490 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP5 DUP5 PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4263 DUP6 DUP6 PUSH2 0x3CDD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4274 DUP6 DUP3 DUP7 ADD PUSH2 0x3CDD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x429D DUP6 DUP6 PUSH2 0x3CDD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4274 DUP6 DUP3 DUP7 ADD PUSH2 0x3EEE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x42C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x42E6 DUP8 DUP3 DUP9 ADD PUSH2 0x3D67 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x430E DUP8 DUP3 DUP9 ADD PUSH2 0x3CE8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x432A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4336 DUP8 DUP3 DUP9 ADD PUSH2 0x3CE8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x435E DUP8 DUP3 DUP9 ADD PUSH2 0x3E7E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x437C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA74 DUP5 DUP3 DUP6 ADD PUSH2 0x3DC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x43B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x43CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43D6 DUP8 DUP3 DUP9 ADD PUSH2 0x3DC4 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x43F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43FE DUP8 DUP3 DUP9 ADD PUSH2 0x3DC4 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x441A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4426 DUP8 DUP3 DUP9 ADD PUSH2 0x3D67 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x435E DUP8 DUP3 DUP9 ADD PUSH2 0x3D67 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4485 DUP7 DUP3 DUP8 ADD PUSH2 0x3DC4 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44AD DUP7 DUP3 DUP8 ADD PUSH2 0x3E7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44D5 DUP7 DUP3 DUP8 ADD PUSH2 0x3D67 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x44F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x450A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4516 DUP7 DUP3 DUP8 ADD PUSH2 0x3DC4 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x44AD DUP7 DUP3 DUP8 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x453A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x455C DUP6 DUP3 DUP7 ADD PUSH2 0x3E21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4274 DUP6 DUP3 DUP7 ADD PUSH2 0x3D67 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP5 DUP5 PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4263 DUP6 DUP6 PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x45E2 DUP7 DUP7 PUSH2 0x3EF9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x45F3 DUP7 DUP3 DUP8 ADD PUSH2 0x3CDD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x460F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44D5 DUP7 DUP3 DUP8 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x462D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP5 DUP5 PUSH2 0x3F04 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x464B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP5 DUP5 PUSH2 0x3F0F JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP5 DUP5 PUSH2 0x3F69 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x469D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA74 DUP5 DUP3 DUP6 ADD PUSH2 0x3FEC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46DE DUP6 DUP3 DUP7 ADD PUSH2 0x3FEC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4274 DUP6 DUP3 DUP7 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x471C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x473E DUP8 DUP3 DUP9 ADD PUSH2 0x3FEC JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x475A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4766 DUP8 DUP3 DUP9 ADD PUSH2 0x3FEC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4782 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x478E DUP8 DUP3 DUP9 ADD PUSH2 0x3F1A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x435E DUP8 DUP3 DUP9 ADD PUSH2 0x3F1A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x47CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47ED DUP7 DUP3 DUP8 ADD PUSH2 0x3FEC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x45F3 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4811 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46DE DUP6 DUP3 DUP7 ADD PUSH2 0x418D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E6 DUP4 DUP4 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x484B DUP4 DUP4 PUSH2 0x4B0B JUMP JUMPDEST POP POP PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53B2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x534E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4876 DUP3 PUSH2 0x5341 JUMP JUMPDEST PUSH2 0x4880 DUP2 DUP6 PUSH2 0x5345 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x4892 DUP6 PUSH2 0x533B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x48CC JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x48AF DUP6 DUP3 PUSH2 0x4833 JUMP JUMPDEST SWAP5 POP PUSH2 0x48BA DUP4 PUSH2 0x533B JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4896 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48E4 DUP3 PUSH2 0x5341 JUMP JUMPDEST PUSH2 0x48EE DUP2 DUP6 PUSH2 0x5345 JUMP JUMPDEST SWAP4 POP PUSH2 0x48F9 DUP4 PUSH2 0x533B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4927 JUMPI DUP2 MLOAD PUSH2 0x4911 DUP9 DUP3 PUSH2 0x483F JUMP JUMPDEST SWAP8 POP PUSH2 0x491C DUP4 PUSH2 0x533B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x48FD JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x493D DUP3 PUSH2 0x5341 JUMP JUMPDEST PUSH2 0x4947 DUP2 DUP6 PUSH2 0x5345 JUMP JUMPDEST SWAP4 POP PUSH2 0x4952 DUP4 PUSH2 0x533B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4927 JUMPI DUP2 MLOAD PUSH2 0x496A DUP9 DUP3 PUSH2 0x483F JUMP JUMPDEST SWAP8 POP PUSH2 0x4975 DUP4 PUSH2 0x533B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4956 JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x5359 JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x535E JUMP JUMPDEST PUSH2 0x485C PUSH2 0x499E DUP3 PUSH2 0x535E JUMP JUMPDEST PUSH2 0x535E JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x5361 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49B7 DUP3 PUSH2 0x5341 JUMP JUMPDEST PUSH2 0x49C1 DUP2 DUP6 PUSH2 0x5345 JUMP JUMPDEST SWAP4 POP PUSH2 0x49D1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x540B JUMP JUMPDEST PUSH2 0x49DA DUP2 PUSH2 0x5437 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49EF DUP3 PUSH2 0x5341 JUMP JUMPDEST PUSH2 0x49F9 DUP2 DUP6 PUSH2 0xA3F JUMP JUMPDEST SWAP4 POP PUSH2 0x4A09 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x540B JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53BD JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53C8 JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53D3 JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53DE JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A4D PUSH1 0x1C DUP4 PUSH2 0xA3F JUMP JUMPDEST PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE PUSH1 0x1C ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A86 PUSH1 0x14 DUP4 PUSH2 0x5345 JUMP JUMPDEST PUSH20 0x1514905394D1915494D7D4D550D0D154D4D19553 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x4AC1 DUP3 DUP3 PUSH2 0x4932 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x4ADB DUP3 DUP3 PUSH2 0x4932 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x4AF0 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4B03 PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xA0 DUP4 ADD SWAP1 PUSH2 0x4B1C DUP5 DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x4B2F PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4B42 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4B55 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2C14 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x180 DUP4 ADD SWAP1 PUSH2 0x4B7A DUP5 DUP3 PUSH2 0x4B0B JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x4B8D PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4B0B JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4BA1 PUSH2 0x140 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2C14 PUSH2 0x160 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x4BC6 DUP5 DUP3 PUSH2 0x4A37 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x4BD9 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2C14 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1C0 DUP5 ADD SWAP1 PUSH2 0x4C01 DUP6 DUP3 PUSH2 0x4862 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x4C14 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x4862 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x4C27 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x4862 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4C3A PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x4862 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x4C4D PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x4C60 PUSH1 0xA0 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0x4C73 PUSH1 0xC0 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0xE0 DUP4 ADD MLOAD PUSH2 0x4C86 PUSH1 0xE0 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH2 0x100 DUP4 ADD MLOAD PUSH2 0x4C9B PUSH2 0x100 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH2 0x120 DUP4 ADD MLOAD PUSH2 0x4CB0 PUSH2 0x120 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH2 0x140 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x140 DUP7 ADD MSTORE PUSH2 0x4CCA DUP3 DUP3 PUSH2 0x49AC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x160 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x160 DUP7 ADD MSTORE PUSH2 0x4CE6 DUP3 DUP3 PUSH2 0x49AC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x180 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x180 DUP7 ADD MSTORE PUSH2 0x4D02 DUP3 DUP3 PUSH2 0x49AC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1A0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x1A0 DUP7 ADD MSTORE PUSH2 0xCF8 DUP3 DUP3 PUSH2 0x49AC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH1 0xA0 DUP5 ADD SWAP1 PUSH2 0x4D32 DUP6 DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x4D45 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x4D58 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x4989 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4D6B PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x4862 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0xCF8 DUP3 DUP3 PUSH2 0x49AC JUMP JUMPDEST PUSH2 0x485C DUP2 PUSH2 0x53AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E6 DUP3 DUP5 PUSH2 0x49E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DA3 DUP3 PUSH2 0x4A40 JUMP JUMPDEST SWAP2 POP PUSH2 0x4DAF DUP3 DUP5 PUSH2 0x4992 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4862 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4DD4 DUP3 DUP6 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0x8E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4862 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4DEF DUP3 DUP7 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0x4DFC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0xA74 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4E17 DUP3 DUP8 PUSH2 0x4862 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4E29 DUP2 DUP7 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4E3D DUP2 DUP6 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x35B6 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8E6 DUP2 DUP5 PUSH2 0x486B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8E6 DUP2 DUP5 PUSH2 0x48D9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4980 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4DD4 DUP3 DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4EAB DUP3 DUP8 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x4EB8 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4862 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4E3D DUP2 DUP6 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4ED8 DUP3 DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x8E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4EF3 DUP3 DUP6 PUSH2 0x4989 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xA74 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4F13 DUP3 DUP7 PUSH2 0x4989 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4F25 DUP2 DUP6 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xCF8 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4F47 DUP3 DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x8E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4A37 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4F62 DUP3 DUP9 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x4F6F PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x4F7C PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0x4F89 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4862 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x313C DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FA9 DUP3 DUP7 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x4DFC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4FC4 DUP3 DUP8 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x4FD1 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4D83 JUMP JUMPDEST PUSH2 0x4FDE PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0xCF8 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x49A3 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4DD4 DUP3 DUP6 PUSH2 0x49A3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8E6 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5029 DUP2 DUP8 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP PUSH2 0x5038 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0x4FDE PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4862 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5056 DUP2 DUP6 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xA74 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x507B DUP2 DUP7 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x508F DUP2 DUP6 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP PUSH2 0xA74 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x160 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x50B0 DUP2 DUP15 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x50C4 DUP2 DUP14 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x50D8 DUP2 DUP13 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x50EC DUP2 DUP12 PUSH2 0x49AC JUMP JUMPDEST SWAP1 POP PUSH2 0x50FB PUSH1 0x80 DUP4 ADD DUP11 PUSH2 0x4862 JUMP JUMPDEST PUSH2 0x5108 PUSH1 0xA0 DUP4 ADD DUP10 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x5115 PUSH1 0xC0 DUP4 ADD DUP9 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x5122 PUSH1 0xE0 DUP4 ADD DUP8 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x5130 PUSH2 0x100 DUP4 ADD DUP7 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x513E PUSH2 0x120 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x514C PUSH2 0x140 DUP4 ADD DUP5 PUSH2 0x4989 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x516A DUP3 DUP7 PUSH2 0x4A13 JUMP JUMPDEST PUSH2 0x5177 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xCF8 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FA9 DUP3 DUP7 PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x51B3 DUP3 DUP7 PUSH2 0x4A25 JUMP JUMPDEST PUSH2 0x51C0 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0xA74 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4862 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FA9 DUP3 DUP7 PUSH2 0x4A25 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FA9 DUP3 DUP7 PUSH2 0x4A2E JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x51F7 DUP3 DUP8 PUSH2 0x4A37 JUMP JUMPDEST PUSH2 0x5204 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4989 JUMP JUMPDEST PUSH2 0x5211 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4862 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x35B6 DUP2 DUP5 PUSH2 0x49AC JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4ED8 DUP3 DUP6 PUSH2 0x4A13 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x775 DUP2 PUSH2 0x4A79 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8E6 DUP2 DUP5 PUSH2 0x4AA9 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4B0B JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4B68 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x775 DUP3 DUP5 PUSH2 0x4BB5 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x528E DUP2 DUP6 PUSH2 0x4BEC JUMP JUMPDEST SWAP1 POP PUSH2 0x8E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52AE DUP2 DUP7 PUSH2 0x4BEC JUMP JUMPDEST SWAP1 POP PUSH2 0x5177 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4989 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x528E DUP2 DUP6 PUSH2 0x4D1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x52EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x530A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x532A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x53A0 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xA3F DUP2 PUSH2 0x5441 JUMP JUMPDEST DUP1 PUSH2 0xA3F DUP2 PUSH2 0x544B JUMP JUMPDEST DUP1 PUSH2 0xA3F DUP2 PUSH2 0x5455 JUMP JUMPDEST DUP1 PUSH2 0xA3F DUP2 PUSH2 0x545F JUMP JUMPDEST DUP1 PUSH2 0xA3F DUP2 PUSH2 0x5469 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x53F4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x536E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x5378 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x5382 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x538C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x5396 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x775 DUP3 PUSH2 0x534E JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5426 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x540E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2C14 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x7C3 JUMPI INVALID JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x7C3 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x7C3 JUMPI INVALID JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x7C3 JUMPI INVALID JUMPDEST PUSH1 0x7 DUP2 LT PUSH2 0x7C3 JUMPI INVALID JUMPDEST PUSH2 0x547C DUP2 PUSH2 0x534E JUMP JUMPDEST DUP2 EQ PUSH2 0x7C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x547C DUP2 PUSH2 0x5359 JUMP JUMPDEST PUSH2 0x547C DUP2 PUSH2 0x535E JUMP JUMPDEST PUSH2 0x547C DUP2 PUSH2 0x5361 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x20 SWAP5 DUP6 ADD KECCAK256 DUP4 MLOAD SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 MSTORE SWAP6 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP1 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 DUP8 0xE0 POP PUSH18 0xFAFB91608A204FCA02A84264FC88BE64E369 0x28 0xC8 BLOCKHASH SELFBALANCE 0xB7 0xDD COINBASE CALL 0xF EQ PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV LT STOP BLOCKHASH ", "sourceMap": "1057:384:25:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1508:53:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1508:53:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2236:137:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2236:137:29;;;:::i;:::-;;1091:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1091:36:29;;;:::i;:::-;;;;;;;;2020:296:31;;;;;;;;;:::i;:::-;;;;;;;;1843:42:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1843:42:27;;;;;;;;:::i;2019:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2019:42:27;;;;;;;;:::i;4971:157::-;;;;;;;;;:::i;5783:1239:33:-;;;;;;;;;:::i;:::-;;;;;;;;2529:219:30;;;;;;;;;:::i;2822:1260:27:-;;;;;;;;;:::i;2299:166:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2299:166:26;;;;;;;;:::i;:::-;;;;;;;;3083:549:28;;;;;;;;;:::i;:::-;;;;;;;;1847:535;;;;;;;;;:::i;3035:444:30:-;;;;;;;;;:::i;7573:1652:33:-;;;;;;;;;:::i;2265:71:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2265:71:30;;;;;;;;:::i;3831:1003::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3831:1003:30;;;;;;;;:::i;1972:63::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1972:63:30;;;;;;;;:::i;1299:35:29:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1299:35:29;;;:::i;4361:499:28:-;;;;;;;;;:::i;:::-;;;;;;;;10891:705:33;;;;;;;;;:::i;5787:472:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5787:472:30;;;;;;;;:::i;827:20:21:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:20:21;;;:::i;4564:669:33:-;;;;;;;;;:::i;:::-;;;;;;;;1491:269:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1491:269:29;;;;;;;;:::i;2438:661:33:-;;;;;;;;;:::i;4411:422:27:-;;;;;;;;;:::i;5402:2305::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5402:2305:27;;;;;;;;:::i;:::-;;;;;;;;5096:406:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5096:406:30;;;;;;;;:::i;9704:708:33:-;;;;;;;;;:::i;1676:696:32:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1676:696:32;;;;;;;;:::i;5507:513:28:-;;;;;;;;;:::i;3471:673:33:-;;;;;;;;;:::i;1934:193:29:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1934:193:29;;;;;;;;:::i;1066:42:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1066:42:2;;;:::i;1390:700:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1390:700:26;;;;;;;;:::i;2431:67:27:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2431:67:27;;;;;;;;:::i;729:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;729:55:14;;;:::i;:::-;;;;;;;;11708:284:33;;;;;;;;;:::i;1638:434::-;;;;;;;;;:::i;1695:36:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1695:36:31;;;:::i;1097:329:21:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1097:329:21;;;;;;;;:::i;2681:515:31:-;;;;;;;;;:::i;:::-;;;;;;;;1508:53;;;;;;;;;;;;;;;:::o;2236:137:29:-;960:22:21;:20;:22::i;:::-;2323:43:29;2363:1;2323:31;:43::i;:::-;2236:137::o;1091:36::-;;;;:::o;2020:296:31:-;2231:12;1123:21:23;:19;:21::i;:::-;1119:161;;;2266:43:31;2286:11;2299:9;2266:19;:43::i;:::-;2259:50;;1119:161:23;;;1192:16;:14;:16::i;:::-;2266:43:31;2286:11;2299:9;2266:19;:43::i;:::-;2259:50;;1237:32:23;:30;:32::i;:::-;2020:296:31;;;;:::o;1843:42:27:-;;;;;;;;;;;;;:::o;2019:::-;;;;;;;;;;;;;;;:::o;4971:157::-;954:34:23;:32;:34::i;:::-;5102:19:27;5115:5;5102:12;:19::i;:::-;1009:32:23;:30;:32::i;:::-;1051:14;:12;:14::i;:::-;4971:157:27;:::o;5783:1239:33:-;6013:45;;:::i;:::-;1123:21:23;:19;:21::i;:::-;1119:161;;;6097:13:33;;6074:20;6120:868;6145:12;6140:1;:17;6120:868;;6247:37;6287:64;6316:11;:34;;;6287:20;:28;;:64;;;;:::i;:::-;6247:104;;6432:51;;:::i;:::-;6486:136;6521:6;6528:1;6521:9;;;;;;;;;;;;;;6548:29;6595:10;6606:1;6595:13;;;;;;;;;;;;;;6486:17;:136::i;:::-;6432:190;;6721:61;6751:11;6764:17;6721:29;:61::i;:::-;6707:75;;6918:20;6880:11;:34;;;:58;6876:102;;6958:5;;;;6876:102;-1:-1:-1;;6159:3:33;;6120:868;;;-1:-1:-1;;1119:161:23;;;1192:16;:14;:16::i;:::-;6097:13:33;;6074:20;6120:868;6145:12;6140:1;:17;6120:868;;6247:37;6287:64;6316:11;:34;;;6287:20;:28;;:64;;;;:::i;:::-;6247:104;;6432:51;;:::i;:::-;6486:136;6521:6;6528:1;6521:9;;;;;;;6486:136;6432:190;;6721:61;6751:11;6764:17;6721:29;:61::i;:::-;6707:75;;6918:20;6880:11;:34;;;:58;6876:102;;6958:5;;;;6876:102;-1:-1:-1;;6159:3:33;;6120:868;;;-1:-1:-1;;1237:32:23;:30;:32::i;:::-;5783:1239:33;;;;;:::o;2529:219:30:-;954:34:23;:32;:34::i;:::-;2643:21:30;2667:27;:25;:27::i;:::-;2704:15;;;;:9;:15;;;;;;;;-1:-1:-1;;;;;2704:30:30;;;;;;;;;:37;;-1:-1:-1;;2704:37:30;2737:4;2704:37;;;-1:-1:-1;1009:32:23;:30;:32::i;2822:1260:27:-;954:34:23;:32;:34::i;:::-;2957:20:27;2980:27;:25;:27::i;:::-;2957:50;-1:-1:-1;3265:26:27;-1:-1:-1;;;;;3294:26:27;;3310:10;3294:26;:52;;3336:10;3294:52;;;3331:1;3294:52;-1:-1:-1;;;;;3512:24:27;;;3434:21;3512:24;;;:10;:24;;;;;;;;:44;;;;;;;;;;3265:81;;-1:-1:-1;3477:1:27;3458:20;;;3628:30;;;3624:232;;3674:171;3696:148;3751:12;3781:18;3817:13;3696:37;:148::i;:::-;3674:21;:171::i;:::-;-1:-1:-1;;;;;3895:24:27;;;;;;;:10;:24;;;;;;;;:44;;;;;;;;;;;;;;:60;;;3970:105;;;;;3942:13;;3970:105;;;;;;;;;;998:1:23;;;;1009:32;:30;:32::i;2299:166:26:-;-1:-1:-1;;;;;;2431:27:26;;2390:18;2431:27;;;:13;:27;;;;;;-1:-1:-1;;;;;2431:27:26;2299:166;;;;:::o;3083:549:28:-;3382:69;;:::i;:::-;954:34:23;:32;:34::i;:::-;3474:151:28;3505:10;3529:11;3554:14;3582:15;3611:4;3474:17;:151::i;:::-;3467:158;;1009:32:23;:30;:32::i;:::-;1051:14;:12;:14::i;:::-;3083:549:28;;;;;;:::o;1847:535::-;2131:69;;:::i;:::-;954:34:23;:32;:34::i;:::-;2223:152:28;2254:10;2278:11;2303:14;2331:15;2360:5;2223:17;:152::i;3035:444:30:-;954:34:23;:32;:34::i;:::-;3220:21:30;3244:27;:25;:27::i;:::-;-1:-1:-1;;;;;3281:32:30;;;;;;;:17;:32;;;;;;;;:50;;;;;;;;;;;;;;:61;;-1:-1:-1;;3281:61:30;;;;;;;3357:115;3281:32;;-1:-1:-1;3281:50:30;;3357:115;;;;3281:61;;3357:115;;;;;;;;;;998:1:23;1009:32;:30;:32::i;:::-;1051:14;:12;:14::i;:::-;3035:444:30;;:::o;7573:1652:33:-;7802:45;;:::i;:::-;1123:21:23;:19;:21::i;:::-;1119:161;;;7886:13:33;;7863:20;7909:1282;7934:12;7929:1;:17;7909:1282;;8104:34;;8035:37;;8075:64;;:20;;:64;:28;:64;:::i;:::-;8035:104;;8335:37;8375:177;8421:6;8428:1;8421:9;;;;;;;;;;;;;;:26;;;8465:6;8472:1;8465:9;;;;;;;;;;;;;;:26;;;8509:29;8375:28;:177::i;:::-;8335:217;;8633:51;;:::i;:::-;8687:136;8722:6;8729:1;8722:9;;;;;;;;;;;;;;8749:29;8796:10;8807:1;8796:13;;;;;;;8687:136;8633:190;;8922:61;8952:11;8965:17;8922:29;:61::i;:::-;8908:75;;9121:20;9083:11;:34;;;:58;9079:102;;9161:5;;;;;9079:102;-1:-1:-1;;;7948:3:33;;7909:1282;;1119:161:23;1192:16;:14;:16::i;:::-;7886:13:33;;7863:20;7909:1282;7934:12;7929:1;:17;7909:1282;;8104:34;;8035:37;;8075:64;;:20;;:64;:28;:64;:::i;:::-;8035:104;;8335:37;8375:177;8421:6;8428:1;8421:9;;;;;;;8375:177;8335:217;;8633:51;;:::i;:::-;8687:136;8722:6;8729:1;8722:9;;;;;;;8687:136;8633:190;;8922:61;8952:11;8965:17;8922:29;:61::i;:::-;8908:75;;9121:20;9083:11;:34;;;:58;9079:102;;9161:5;;;;;9079:102;-1:-1:-1;;;7948:3:33;;7909:1282;;2265:71:30;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3831:1003::-;3997:12;4025:27;4055:101;4092:4;4110:13;4137:9;4055:23;:101::i;:::-;4025:131;-1:-1:-1;4292:23:30;4275:13;:40;;;;;;;;;:100;;;-1:-1:-1;4348:27:30;4331:13;:44;;;;;;;;;4275:100;4258:394;;;4400:241;4422:218;4476:70;4564:4;4586:13;4617:9;4422:36;:218::i;4400:241::-;4671:132;4712:13;4739:4;4757:13;4784:9;4671:27;:132::i;:::-;4661:142;3831:1003;-1:-1:-1;;;;;3831:1003:30:o;1972:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1299:35:29:-;;;-1:-1:-1;;;;;1299:35:29;;:::o;4361:499:28:-;4628:59;;:::i;:::-;954:34:23;:32;:34::i;:::-;4710:143:28;4736:9;4759:10;4783:13;4810:14;4838:5;4710:12;:143::i;10891:705:33:-;11093:45;;:::i;:::-;11168:64;11191:6;11199:20;11221:10;11168:22;:64::i;:::-;11154:78;;11283:20;11246:11;:34;;;:57;11242:348;;;11319:260;11341:237;11400:74;11492:20;11530:11;:34;;;11341:41;:237::i;5787:472:30:-;5974:12;6002:23;6028:57;6057:27;;6028:11;:28;;:57;;;;:::i;:::-;6002:83;;6105:123;6155:11;6180:15;6209:9;6105:36;:123::i;827:20:21:-;;;-1:-1:-1;;;;;827:20:21;;:::o;4564:669:33:-;4803:47;1123:21:23;:19;:21::i;:::-;1119:161;;;4889:13:33;;4926:46;;;;;;;;;;;;;;;;4889:13;4926:46;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;4912:60:33;-1:-1:-1;4987:9:33;4982:217;5007:12;5002:1;:17;4982:217;;5057:131;5092:6;5099:1;5092:9;;;;;;;;;;;;;;5119:21;5141:1;5119:24;;;;;;;;;;;;;;5161:10;5172:1;5161:13;;;;;;;5057:131;5040:11;5052:1;5040:14;;;;;;;;;;;;;;;;;:148;5021:3;;4982:217;;1119:161:23;1192:16;:14;:16::i;:::-;4889:13:33;;4926:46;;;;;;;;;;;;;;;;4889:13;4926:46;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;4912:60:33;-1:-1:-1;4987:9:33;4982:217;5007:12;5002:1;:17;4982:217;;5057:131;5092:6;5099:1;5092:9;;;;;;;5057:131;5040:11;5052:1;5040:14;;;;;;;;;;;;;;;;;:148;5021:3;;4982:217;;1491:269:29;960:22:21;:20;:22::i;:::-;1617:74:29;1639:21;;1662:28;1617:74;;;;;;;;;;;;;;;;1701:21;:52;1491:269::o;2438:661:33:-;2676:47;954:34:23;:32;:34::i;:::-;2762:13:33;;2799:46;;;;;;;;;;;;;;;;2762:13;2799:46;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;2785:60:33;-1:-1:-1;2860:9:33;2855:210;2880:12;2875:1;:17;2855:210;;2930:124;2958:6;2965:1;2958:9;;;;;;;;;;;;;;2985:21;3007:1;2985:24;;;;;;;;;;;;;;3027:10;3038:1;3027:13;;;;;;;;;;;;;;2930:10;:124::i;:::-;2913:11;2925:1;2913:14;;;;;;;;;;;;;;;;;:141;2894:3;;2855:210;;;-1:-1:-1;;1009:32:23;:30;:32::i;:::-;1051:14;:12;:14::i;4411:422:27:-;4627:45;;:::i;:::-;954:34:23;:32;:34::i;:::-;4702:96:27;4726:5;4745:20;4779:9;4702:10;:96::i;:::-;4688:110;-1:-1:-1;1009:32:23;:30;:32::i;5402:2305:27:-;5498:35;;:::i;:::-;5710;5739:5;5710:28;:35::i;:::-;5669:37;;;5647:98;5648:19;;;5647:98;6047:22;;;;6043:159;;6090:9;6114:47;6090:71;;;;;;;;;;;;;-1:-1:-1;6175:16:27;;6043:159;6515:22;;;;6511:159;;6558:9;6582:47;6558:71;;6511:159;6764:5;:22;;;6723:9;:37;;;:63;6719:181;;6802:9;6826:33;6802:57;;6719:181;7024:5;:27;;;7005:15;:46;7001:159;;7067:9;7091:28;7067:52;;7001:159;7229:19;;;;;7219:30;;;;:9;:30;;;;;;;;;7215:145;;;7265:9;7289:30;7265:54;;7215:145;7427:10;;;;7384:18;;-1:-1:-1;;;;;7373:30:27;;;;;;;:10;:30;;;;;;;;7404:19;;;;7373:51;;;;;;;;;;:64;7369:179;;;7453:9;7477:30;7453:54;;7369:179;7645:29;7621:53;;:9;5402:2305;-1:-1:-1;5402:2305:27:o;5096:406:30:-;5247:12;5275:17;5295:51;5318:27;;5295:5;:22;;:51;;;;:::i;:::-;5275:71;;5366:105;5410:5;5429:9;5452;5366:30;:105::i;9704:708:33:-;9907:45;;:::i;:::-;9982:65;10006:6;10014:20;10036:10;9982:23;:65::i;:::-;9968:79;;10098:20;10061:11;:34;;;:57;10057:349;;;10134:261;10156:238;10215:75;10308:20;10346:11;:34;;;10156:41;:238::i;1676:696:32:-;1917:16;;1900:14;1943:383;1968:6;1963:1;:11;1943:383;;1995:320;2175:1;2167:10;;2195:9;2205:1;2195:12;;;;;;;;;;;;;;2225:13;2239:1;2225:16;;;;;;;;;;;;;;2259:11;2271:1;2259:14;;;;;;;;;;;;;;2291:7;2299:1;2291:10;;;;;;;;;;;;;;1995:21;:320::i;:::-;1976:3;;1943:383;;;;2335:30;;-1:-1:-1;;;2335:30:32;;;;;;;;;;;;;;;;5507:513:28;5789:59;;:::i;:::-;954:34:23;:32;:34::i;:::-;5871:142:28;5897:9;5920:10;5944:13;5971:14;5999:4;5871:12;:142::i;3471:673:33:-;3715:47;954:34:23;:32;:34::i;:::-;3801:13:33;;3838:46;;;;;;;;;;;;;;;;3801:13;3838:46;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;3824:60:33;-1:-1:-1;3899:9:33;3894:216;3919:12;3914:1;:17;3894:216;;3969:130;4003:6;4010:1;4003:9;;;;;;;;;;;;;;4030:21;4052:1;4030:24;;;;;;;;;;;;;;4072:10;4083:1;4072:13;;;;;;;;;;;;;;3969:16;:130::i;:::-;3952:11;3964:1;3952:14;;;;;;;;;;;;;;;;;:147;3933:3;;3894:216;;1934:193:29;960:22:21;:20;:22::i;:::-;2060:60:29;2092:27;2060:31;:60::i;1066:42:2:-;;;;:::o;1390:700:26:-;960:22:21;:20;:22::i;:::-;1549:19:26;1583:10;-1:-1:-1;;;;;1571:34:26;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1571:36:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1571:36:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1571:36:26;;;;;;;;;-1:-1:-1;;;;;;1645:27:26;;1617:25;1645:27;;;:13;:27;;;;;;1549:58;;-1:-1:-1;;;;;;1645:27:26;1686:31;;1682:207;;1733:145;1755:122;1816:12;1846:17;1755:43;:122::i;1733:145::-;-1:-1:-1;;;;;;1948:27:26;;;;;;:13;:27;;;;;;;:40;;-1:-1:-1;;;;;;1948:40:26;-1:-1:-1;;;;;1948:40:26;;;;;2003:80;;;;;1948:27;;:40;;2003:80;;;;;;;;;;992:1:21;;1390:700:26;:::o;2431:67:27:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;729:55:14:-;-1:-1:-1;;;729:55:14;:::o;11708:284:33:-;954:34:23;:32;:34::i;:::-;11871:13:33;;11848:20;11894:92;11919:12;11914:1;:17;11894:92;;11952:23;11965:6;11972:1;11965:9;;;;;;;;;;;;;;11952:12;:23::i;:::-;11933:3;;11894:92;;;;998:1:23;1009:32;:30;:32::i;1638:434:33:-;1860:45;;:::i;:::-;954:34:23;:32;:34::i;:::-;1935:102:33;1965:5;1984:20;2018:9;1935:16;:102::i;1695:36:31:-;;;-1:-1:-1;;;;;1695:36:31;;:::o;1097:329:21:-;960:22;:20;:22::i;:::-;-1:-1:-1;;;;;1193:22:21;;1189:231;;1231:70;1253:47;:45;:47::i;1231:70::-;1189:231;;;1332:5;:16;;-1:-1:-1;;;;;;1332:16:21;-1:-1:-1;;;;;1332:16:21;;;;;;;1367:42;;1332:16;;1388:10;;1367:42;;1332:5;1367:42;1097:329;:::o;2681:515:31:-;2904:25;1123:21:23;:19;:21::i;:::-;1119:161;;;2962:19:31;;3004;;;;;;;;;;;;;;;;2962;3004;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2991:32:31;-1:-1:-1;3038:9:31;3033:130;3058:6;3053:1;:11;3033:130;;3101:51;3121:12;3134:1;3121:15;;;;;;;;;;;;;;3138:10;3149:1;3138:13;;;;;;;;;;;;;;3101:19;:51::i;:::-;3085:10;3096:1;3085:13;;;;;;;;;;;;;;;;;:67;3066:3;;3033:130;;;-1:-1:-1;;1119:161:23;;;1192:16;:14;:16::i;:::-;2962:19:31;;3004;;;;;;;;;;;;;;;;2962;3004;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2991:32:31;-1:-1:-1;3038:9:31;3033:130;3058:6;3053:1;:11;3033:130;;3101:51;3121:12;3134:1;3121:15;;;;;;;3101:51;3085:10;3096:1;3085:13;;;;;;;;;;;;;;;;;:67;3066:3;;3033:130;;;-1:-1:-1;;1237:32:23;:30;:32::i;1432:255:21:-;1526:5;;-1:-1:-1;;;;;1526:5:21;1512:10;:19;1508:173;;1650:5;;1547:123;;1569:100;;1622:10;;-1:-1:-1;;;;;1650:5:21;1569:35;:100::i;2544:259:29:-;2686:20;;2658:78;;;;;;-1:-1:-1;;;;;2686:20:29;;;;2708:27;;2658:78;;;;;;;;;;2746:20;:50;;-1:-1:-1;;;;;;2746:50:29;-1:-1:-1;;;;;2746:50:29;;;;;;;;;;2544:259::o;1884:128:23:-;1962:4;1989:16;-1:-1:-1;;;1989:16:23;;;;;1884:128::o;3484:1201:31:-;3652:12;3680:23;3706:57;3735:27;;3706:11;:28;;:57;;;;:::i;:::-;3680:83;;3774:115;3816:11;3841:9;3864:15;3774:28;:115::i;:::-;3970:25;;;;4005:65;3970:25;;4005:35;:65::i;:::-;4112:37;;;;:20;:37;;;;;;:44;;-1:-1:-1;;4112:44:31;4152:4;4112:44;;;4238:16;;;;4211:44;;4184:23;;4219:4;;4211:44;;4238:16;4211:44;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4166:89:31;;;;4270:10;4265:187;;4296:145;4318:122;4383:15;4416:10;4318:47;:122::i;4296:145::-;4535:62;4571:13;4594:1;4535:35;:62::i;:::-;4613:37;;4634:15;;4613:37;;;;;4668:10;3484:1201;-1:-1:-1;;;;;;3484:1201:31:o;1648:87:23:-;1705:16;:23;;-1:-1:-1;;;;1705:23:23;-1:-1:-1;;;1705:23:23;;;1648:87::o;1741:137::-;1833:5;1814:24;;-1:-1:-1;;;;1814:24:23;;;1848:23;:21;:23::i;1041:309:22:-;1157:7;;-1:-1:-1;;;1157:7:22;;;;1153:144;;;1180:106;1219:53;:51;:53::i;1180:106::-;1329:7;:14;;-1:-1:-1;;;;1329:14:22;-1:-1:-1;;;1329:14:22;;;1041:309::o;9819:493:27:-;9939:35;;:::i;:::-;9977:19;9990:5;9977:12;:19::i;:::-;9939:57;;10035:36;10054:5;10061:9;10035:18;:36::i;:::-;10158:29;10133:21;;:54;;;;;;;;;10129:91;;10203:7;;;10129:91;10256:49;10278:5;10285:9;:19;;;10256:21;:49::i;1292:155:23:-;1370:21;:19;:21::i;:::-;1365:76;;1407:23;:21;:23::i;1356:102:22:-;1446:5;1436:15;;-1:-1:-1;;;;1436:15:22;;;1356:102::o;965:364:19:-;1051:7;1082:1;1078;:5;1074:227;;;1099:191;1121:168;1178:59;1255:1;1274;1121:39;:168::i;1099:191::-;-1:-1:-1;1317:5:19;;;965:364::o;13456:855:33:-;13630:45;;:::i;:::-;13771:166;;13738:30;;-1:-1:-1;;;13807:44:33;13771:166;;13865:5;;13884:20;;13918:9;;13771:166;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13771:166:33;;;;-1:-1:-1;;;;;13771:166:33;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;13771:166:33;13738:199;;13949:15;13966:23;14001:4;-1:-1:-1;;;;;13993:26:33;14020:17;13993:45;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;13948:90:33;;;;14052:10;14048:153;;;14085:10;:17;14106:3;14085:24;14078:32;;;;14149:10;14138:52;;;;;;;;;;;;;;14124:66;;14048:153;-1:-1:-1;;;13456:855:33;;;;;:::o;8481:820:4:-;8640:35;;:::i;:::-;8777;;8733;;:80;;;:43;:80;:::i;:::-;8691:122;;8909:35;;;;;8865;;;;:80;;;:43;:80;:::i;:::-;8823:39;;;:122;9021:25;;;;;8987;;;;:60;;;:33;:60;:::i;:::-;8955:29;;;:92;9123:25;;;;;9089;;;;:60;;;:33;:60;:::i;:::-;9057:29;;;:92;9231:28;;;;;9194;;;;:66;;;:36;:66;:::i;:::-;9159:32;;;:101;8481:820;;;;:::o;8177:308:31:-;8317:21;;8261:7;;-1:-1:-1;;;;;8317:21:31;8261:7;8373:36;;:74;;8425:22;8373:74;;;8412:10;8373:74;8348:99;-1:-1:-1;;;8177:308:31;:::o;10732:372:3:-;10906:12;2939:10;10977:26;;11017:12;11043:18;11075:12;10941:156;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;10941:156:3;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;10941:156:3;;;179:29:-1;;;;160:49;;;10941:156:3;-1:-1:-1;10732:372:3;;;;;:::o;1511:170:18:-;1654:9;1648:16;1641:4;1630:9;1626:20;1619:46;8431:6398:28;8706:69;;:::i;:::-;8866:17;;8862:216;;8904:163;8926:140;8987:65;8926:43;:140::i;8904:163::-;9091:18;;9087:218;;9130:164;9152:141;9213:66;9152:43;:141::i;9130:164::-;9405:14;:21;9384:10;:17;:42;9380:250;;9442:177;9464:154;9525:79;9464:43;:154::i;9442:177::-;9665:15;:22;9643:11;:18;:44;9639:253;;9703:178;9725:155;9786:80;9725:43;:155::i;9703:178::-;9966:10;:17;9933:51;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;9902:82:28;;10059:18;;10026:52;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;9994:29:28;;;:84;10124:15;;10281:31;;:::i;:::-;10315:10;10326:1;10315:13;;;;;;;;;;;;;;10281:47;;10338:32;;:::i;:::-;10373:11;10385:1;10373:14;;;;;;;;;;;;;;10338:49;;10400:39;10443;10472:9;10443:28;:39::i;:::-;10397:85;;;10495:40;10539;10568:10;10539:28;:40::i;:::-;10492:87;;;10589:49;;:::i;:::-;10648:50;;:::i;:::-;10948:53;;:::i;:::-;11004:208;11034:9;11061:10;11089:14;11104:7;11089:23;;;;;;;;;;;;;;11130:15;11146:8;11130:25;;;;;;;;;;;;;;11173;11004:12;:208::i;:::-;11388:17;;:40;;;10948:264;;-1:-1:-1;11348:81:28;;:31;;:81;:39;:81;:::i;:::-;11314:115;;11478:83;11519:12;:18;;;:41;;;11478:32;:40;;:83;;;;:::i;:::-;11443:118;;11695:111;11742:15;11775:12;:17;;;11695:29;:111::i;:::-;11677:129;;11839:113;11886:16;11920:12;:18;;;11839:29;:113::i;:::-;11820:132;;12133:121;12205:12;:35;;;12133:23;:46;;;:54;;:121;;;;:::i;:::-;12084:46;;;:170;12391:36;;;;;12318:47;;;;:123;;;:55;:123;:::i;:::-;12268:47;;;:173;12670:26;;;;12635:61;;12631:940;;12796:28;;:39;;12825:9;;;;12838:15;;12796:28;:39;;;;;;;;;;;:57;;;;12951:41;;;;;;;;12978:1;12951:41;;;;12981:1;12951:41;;;;12984:1;12951:41;;;;12987:1;12951:41;;;;12990:1;12951:41;;;12933:59;;13174:10;:17;13163:7;:28;13159:398;;;13318:16;13276:23;:29;;;13306:8;13276:39;;;;;;;;;;;;;:58;;;;13356:5;;;13159:398;13420:10;13431:7;13420:19;;;;;;;;;;;;;;13408:31;;13499:39;13528:9;13499:28;:39::i;:::-;13461:77;-1:-1:-1;;13159:398:28;13805:10;:27;;;13769:32;:63;13765:951;;13977:16;13933:23;:29;;;13963:10;;;;;;13933:41;;;;;;;;;;;;;:60;;;;14092:41;;;;;;;;14119:1;14092:41;;;;14122:1;14092:41;;;;14125:1;14092:41;;;;14128:1;14092:41;;;;14131:1;14092:41;;;14073:60;;14317:11;:18;14305:8;:30;14301:401;;;14459:15;14419:23;:28;;;14448:7;14419:37;;;;;;;14301:401;14561:11;14573:8;14561:21;;;;;;;;;;;;;;14548:34;;14643:40;14672:10;14643:28;:40::i;:::-;14604:79;-1:-1:-1;;14301:401:28;10839:3887;;;;-1:-1:-1;;;;;;;;8431:6398:28;;;;;;;:::o;3762:545:5:-;3925:21;4165:104;4257:11;4165:70;4212:22;4257:11;4232:1;4212:22;:19;:22;:::i;:::-;4165:25;:9;4183:6;4165:25;:17;:25;:::i;:::-;:46;:70;:46;:70;:::i;:::-;:91;:104;:91;:104;:::i;13751:1772:30:-;13921:27;14033:96;14065:4;14083:13;14110:9;14033:18;:96::i;:::-;14017:112;-1:-1:-1;;;;;;14222:27:30;;14218:285;;14265:227;14287:204;14341:56;14415:4;14437:13;14468:9;14287:36;:204::i;14265:227::-;14588:29;14564:13;14558:20;;;;;;;;:60;;;14554:315;;14634:224;14656:201;14710:53;14781:4;14803:13;14834:9;14656:36;:201::i;14634:224::-;15218:21;15201:13;:38;;;;;;;;;15197:289;;;15255:220;15277:197;15331:49;15398:4;15420:13;15451:9;8091:404:3;8292:12;1851:10;8363:24;;8401:9;8424:4;8442:13;8469:9;8327:161;;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;8327:161:3;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;8327:161:3;;;179:29:-1;;;;160:49;;;8327:161:3;-1:-1:-1;8091:404:3;;;;;;:::o;9966:3058:30:-;10177:12;10469:21;10452:13;:38;;;;;;;;;10448:2546;;;10510:9;:16;10530:1;10510:21;10506:307;;10551:247;10573:224;10631:56;10709:4;10735:13;10770:9;10573:36;:224::i;10551:247::-;-1:-1:-1;10836:5:30;10448:2546;;;10914:20;10897:13;:37;;;;;;;;;10893:2101;;;10954:9;:16;10974:2;10954:22;10950:308;;10996:247;11018:224;11076:56;11154:4;11180:13;11215:9;11018:36;:224::i;10996:247::-;11271:7;11287:9;11297:1;11287:12;;;;;;;;;;;;;;;-1:-1:-1;11314:9:30;11326:24;:9;11348:1;11326:24;:21;:24;:::i;:::-;11314:36;-1:-1:-1;11364:9:30;11376:25;:9;11398:2;11376:25;:21;:25;:::i;:::-;11364:37;;11415:17;11435:102;11462:4;11484:1;11503;11522;11435:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11435:102:30;;-1:-1:-1;;11435:102:30;;-1:-1:-1;;;;;11561:26:30;;;;;;;-1:-1:-1;10893:2101:30;;-1:-1:-1;;;;;10893:2101:30;;11664:21;11647:13;:38;;;;;;;;;11643:1351;;;11705:9;:16;11725:2;11705:22;11701:308;;11747:247;11769:224;11827:56;11905:4;11931:13;11966:9;11769:36;:224::i;11747:247::-;12022:7;12038:9;12048:1;12038:12;;;;;;;;;;;;;;;-1:-1:-1;12065:9:30;12077:24;:9;12099:1;12077:24;:21;:24;:::i;:::-;12065:36;-1:-1:-1;12115:9:30;12127:25;:9;12149:2;12127:25;:21;:25;:::i;:::-;12115:37;;12166:17;12186:225;12317:4;12223:116;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12223:116:30;;;12213:127;;;;;;12358:1;12377;12396;12186:225;;;;;;;;;;;;;;;;;;;11643:1351;12550:20;12533:13;:37;;;;;;;;;12529:465;;;12596:117;12637:4;12659:13;12690:9;12596:23;:117::i;:::-;12586:127;;12529:465;;;12832:23;12815:13;:40;;;;;;;;;12808:48;;;;-1:-1:-1;12953:15:30;;;;:9;:15;;;;;;;;-1:-1:-1;;;;;12953:30:30;;;;;;;;;;;;9966:3058;;;;;;:::o;15830:2739:28:-;16088:59;;:::i;:::-;16524:24;;;;;16496:25;;;;:52;;;;16586:24;;;16558:25;;;:52;16660:39;;:::i;:::-;16702:23;16715:9;16702:12;:23::i;:::-;16660:65;;16735:40;;:::i;:::-;16778:24;16791:10;16778:12;:24::i;:::-;16735:67;;16844:20;16867:27;:25;:27::i;:::-;16844:50;;16957:133;16991:9;17014:13;17041:12;17067:13;16957:20;:133::i;:::-;17100:136;17134:10;17158:14;17186:12;17212:14;17100:20;:136::i;:::-;17246:149;17277:9;17300:10;17324:13;:23;;;17361:14;:24;;;17246:17;:149::i;:::-;17472:309;17528:9;17551:10;17575:13;:41;;;17630:14;:42;;;17686:21;;17721:11;17746:25;17472:42;:309::i;:::-;17451:330;;17825:206;17857:9;17880:12;17906:13;:23;;;17943:13;:41;;;17998:18;:23;;;17825:18;:206::i;:::-;18041:210;18073:10;18097:12;18123:14;:24;;;18161:14;:42;;;18217:18;:24;;;18041:18;:210::i;:::-;18316;18350:13;:23;;;18387:14;:24;;;18425:9;18448:10;18472:12;18498:18;18316:20;:210::i;:::-;-1:-1:-1;;;15830:2739:28;;;;;;;:::o;13960:418:3:-;14165:12;4354:10;14236:30;;14280:9;14303:23;14340:21;14200:171;;;;;;;;;;;1921:441:8;2066:23;2207:116;2248:24;2286:27;:11;:25;:27::i;:::-;2207;:116::i;8377:1482:30:-;8660:25;;;;8608:12;;;8725:112;8762:15;8660:25;8818:9;8725:23;:112::i;:::-;8695:142;-1:-1:-1;8868:23:30;8851:13;:40;;;;;;;;;8847:982;;;8992:213;9037:63;9071:11;9084:15;9037:33;:63::i;:::-;9118:15;9151:13;9182:9;8992:27;:213::i;:::-;8982:223;;8847:982;;;9243:27;9226:13;:44;;;;;;;;;9222:607;;;9368:177;9410:63;9444:11;9457:15;9410:33;:63::i;:::-;9491:13;9522:9;9368:24;:177::i;9222:607::-;9655:163;9700:13;9731:15;9764:13;9795:9;9655:27;:163::i;:::-;9645:173;;9222:607;-1:-1:-1;;8377:1482:30;;;;;:::o;8036:1552:27:-;8203:45;;:::i;:::-;8292:35;;:::i;:::-;8330:19;8343:5;8330:12;:19::i;:::-;8292:57;;8391:20;8414:27;:25;:27::i;:::-;8391:50;;8506:121;8540:5;8559:9;8582:12;8608:9;8506:20;:121::i;:::-;8682:33;8718:69;8749:9;:37;;;8718:5;:22;;;:30;;:69;;;;:::i;:::-;8682:105;;8797:30;8830:67;8849:20;8871:25;8830:18;:67::i;:::-;8797:100;;8967:160;9016:5;9035:22;9071:21;;9106:11;8967:35;:160::i;:::-;8953:174;;9138:17;9158:9;:19;;;9138:39;;9230:172;9262:5;9281:12;9307:9;9330;:37;;;9381:11;9230:18;:172::i;:::-;9437:115;9463:9;9486:5;9505:12;9531:11;9437:12;:115::i;:::-;-1:-1:-1;;;;;8036:1552:27;;;;;:::o;17818:368::-;17932:17;17951:35;18014:51;18037:27;;18014:5;:22;;:51;;;;:::i;:::-;18105:17;;;;:6;:17;;;;;;18002:63;;-1:-1:-1;18105:17:27;-1:-1:-1;17818:368:27;;;:::o;4810:315:7:-;4937:17;4982:110;5023:24;5061:21;:5;:19;:21::i;6617:1367:30:-;6858:18;;6806:12;;;6916:106;6953:9;6858:18;7003:9;6916:23;:106::i;:::-;6886:136;-1:-1:-1;7053:23:30;7036:13;:40;;;;;;;;;7032:922;;;7171:189;7216:45;7244:5;7251:9;7216:27;:45::i;7032:922::-;7398:27;7381:13;:44;;;;;;;;;7377:577;;;7517:159;7559:45;7587:5;7594:9;7559:27;:45::i;2854:2037:26:-;3109:10;;3105:1780;;3261:2;3242:9;:16;:21;;;;;;3267:1;3242:26;3238:311;;3288:246;3310:223;3377:76;3475:9;3506;3310:45;:223::i;3288:246::-;3597:19;3619:23;:9;3597:19;3619:23;:20;:23;:::i;:::-;-1:-1:-1;;;;;;3677:27:26;;3656:18;3677:27;;;:13;:27;;;;;;3597:45;;-1:-1:-1;;;;;;3677:27:26;3768:24;3764:303;;3812:240;3834:217;3901:70;3993:9;4024;3834:45;:217::i;3812:240::-;4175:192;;4146:26;;-1:-1:-1;;;4215:45:26;4175:192;;4278:9;;4305:4;;4327:2;;4347:6;;4175:192;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4175:192:26;;;;-1:-1:-1;;;;;4175:192:26;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;4175:192:26;4146:221;;4474:15;4491:23;4518:10;-1:-1:-1;;;;;4518:15:26;4534:13;4518:30;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4473:75:26;;;;4650:10;4645:230;;4680:180;4702:157;4769:9;4800;4831:10;4702:45;:157::i;4680:180::-;3105:1780;;;;;;2854:2037;;;;;:::o;12305:730:33:-;12478:45;;:::i;:::-;12553:96;12577:5;12596:20;12630:9;12553:10;:96::i;:::-;12539:110;;12701:20;12663:11;:34;;;:58;12659:342;;12737:253;12759:230;12818:67;12903:20;12941:11;:34;;;12759:41;:230::i;11110:326:3:-;11258:12;3091:10;11329:33;;11376:12;11402:17;11293:136;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;11293:136:3;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;11293:136:3;;;179:29:-1;;;;160:49;;;11293:136:3;-1:-1:-1;11110:326:3;;;;:::o;669:159:16:-;787:34;;;;;;;;;;;;-1:-1:-1;;;787:34:16;;;;669:159;:::o;387:276::-;511:12;183:10;582:25;;621:6;641:5;546:110;;;;;;;;;;4967:2304:31;5308:11;:33;;;5289:15;:52;5285:260;;5357:177;5379:154;5435:51;5504:15;5379:38;:154::i;5357:177::-;5657:20;;;;5691:11;:31;;5687:241;;5738:179;5760:156;5824:15;5857:11;5886:16;5760:46;:156::i;5738:179::-;6057:21;;-1:-1:-1;;;;;6057:21:31;6092:36;;6088:229;;6144:162;6166:139;6236:15;6269:22;6166:52;:139::i;6144:162::-;6385:37;;;;:20;:37;;;;;;;;6381:254;;;6438:186;6460:163;6516:60;6594:15;6460:38;:163::i;6438:186::-;6770:25;;;;-1:-1:-1;;;;;6809:27:31;;6826:10;6809:27;;;;:171;;;6841:139;6895:11;6924:15;6957:9;6841:36;:139::i;:::-;6840:140;6809:171;6805:460;;;7005:249;7027:226;7081:67;7166:15;7199:13;7230:9;7027:36;:226::i;7005:249::-;4967:2304;;;;;;:::o;7486:247::-;-1:-1:-1;;;;;7635:27:31;;7652:10;7635:27;7631:96;;7678:21;:38;;-1:-1:-1;;;;;7678:38:31;;-1:-1:-1;;;;;;7678:38:31;;;;;;7486:247;;:::o;12857:329:3:-;13010:12;3858:10;13081:36;;13131:15;13160:9;13045:134;;;;;;;;;;1453:189:23;1535:21;1570:11;;1566:70;;1597:28;;:10;;:28;;;;;1617:7;;1597:28;;;;1617:7;1597:10;:28;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;840:162:17;956:39;;;;;;;;;;;;-1:-1:-1;;;956:39:17;;;;840:162;:::o;14629:1022:27:-;14852:19;;;;-1:-1:-1;;;;;14852:33:27;;14848:382;;14905:19;;;;-1:-1:-1;;;;;14905:33:27;14928:10;14905:33;14901:319;;14958:247;14980:224;15051:62;15135:9;:19;;;15176:10;14980:49;:224::i;14958:247::-;15288:20;15311:27;:25;:27::i;:::-;15288:50;;15374:12;-1:-1:-1;;;;;15352:34:27;:5;:18;;;-1:-1:-1;;;;;15352:34:27;;15348:297;;15402:232;15424:209;15491:61;15570:9;:19;;;15607:12;15424:49;:209::i;15402:232::-;14629:1022;;;:::o;11767:432::-;11925:20;;;;:9;:20;;;;;;;:27;;-1:-1:-1;;11925:27:27;11948:4;11925:27;;;12042:25;;;;12010:18;;12081:20;;;;12115;;;;11990:202;;11935:9;;-1:-1:-1;;;;;11990:202:27;;;;;;;;;;;;;12081:20;;12115;12149:10;;11990:202;;;;;;;;;;11767:432;;:::o;731:322:20:-;884:12;196:10;955:28;;997:9;1020:1;1035;919:127;;;;;;;;;;;1335:383:19;1421:7;1456:5;;;1475;;;1471:223;;;1496:187;1518:164;1575:55;1648:1;1667;1518:39;:164::i;7811:274:3:-;7941:12;4497:10;8012:33;;8059:9;7976:102;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;7976:102:3;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;7976:102:3;;;179:29:-1;;;;160:49;;;7976:102:3;-1:-1:-1;7811:274:3;;;:::o;122:448:19:-;208:7;235:6;231:45;;-1:-1:-1;264:1:19;257:8;;231:45;297:5;;;301:1;297;:5;:1;316:5;;;;;:10;312:234;;342:193;364:170;421:61;500:1;519;364:39;:170::i;576:383::-;662:7;689:6;685:223;;711:186;733:163;790:54;862:1;881;733:39;:163::i;711:186::-;917:9;933:1;929;:5;;;;;;;576:383;-1:-1:-1;;;;576:383:19:o;13111:549:30:-;13276:13;13309:9;:16;13329:1;13309:21;13305:279;;;13346:227;13368:204;13422:56;13496:4;13518:13;13549:9;13368:36;:204::i;13346:227::-;13620:9;13649:1;13630:9;:16;:20;13620:31;;;;;;;;;;;;;;13600:53;;;;;;;14133:679:12;14254:14;14299:5;14307:2;14299:10;14288:1;:8;:21;14284:297;;;14325:245;14347:222;14409:92;14519:1;:8;14545:5;14553:2;14545:10;14347:44;:222::i;14325:245::-;-1:-1:-1;14759:13:12;14661:2;14759:13;14753:20;;14133:679::o;16983:1271:30:-;17237:16;;17153:4;;17334:42;17237:9;-1:-1:-1;;17356:19:30;;17334:42;:21;:42;:::i;:::-;17443:132;;17419:21;;-1:-1:-1;;;17479:45:30;17443:132;;17538:4;;17556:9;;17443:132;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;17443:132:30;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;17443:132:30;;;179:29:-1;;;;160:49;;;17443:132:30;-1:-1:-1;17634:38:30;:9;17656:15;17634:38;:21;:38;:::i;:::-;17733:15;17750:23;17777:13;-1:-1:-1;;;;;17777:24:30;17802:8;17777:34;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;17732:79:30;;;;17900:10;:37;;;;;17914:10;:17;17935:2;17914:23;17900:37;17896:128;;;-1:-1:-1;;;17960:24:30;:10;17982:1;17960:24;:21;:24;:::i;:::-;-1:-1:-1;;;;;17960:53:30;;;17953:60;;;;;;;;17896:128;18080:167;18102:144;18158:4;18176:13;18203:9;18226:10;18102:42;:144::i;18080:167::-;16983:1271;;;;;;;;;:::o;12516:1916:27:-;12835:29;12810:21;;:54;;;;;;;;;12806:258;;12880:173;12902:150;12958:9;:19;;;13016:9;:21;;;12902:38;:150::i;12880:173::-;13135:19;;;;-1:-1:-1;;;;;13135:33:27;;13131:382;;13188:19;;;;-1:-1:-1;;;;;13188:33:27;13211:10;13188:33;13184:319;;13241:247;13263:224;13334:62;13418:9;:19;;;13459:10;13263:49;:224::i;13241:247::-;13583:18;;;;-1:-1:-1;;;;;13583:32:27;;13579:383;;13657:12;-1:-1:-1;;;;;13635:34:27;:5;:18;;;-1:-1:-1;;;;;13635:34:27;;13631:321;;13689:248;13711:225;13782:61;13865:9;:19;;;13906:12;13711:49;:225::i;13689:248::-;14007:131;14055:5;14078:9;:19;;;14115:9;14007:30;:131::i;:::-;14002:424;;14163:252;14185:229;14239:61;14318:9;:19;;;14355:5;:18;;;14391:9;14185:36;:229::i;14163:252::-;12516:1916;;;;:::o;6302:1236:28:-;7336:27;;;;;7301:26;;;;:63;;;:34;:63;:::i;:::-;7258:27;;;;;7223:26;;;;:63;;;:34;:63;:::i;:::-;:141;7219:313;;;7380:141;7402:118;7461:13;7492:14;7402:41;:118::i;4804:3462:4:-;5181:44;;:::i;:::-;5377:26;;;;5337:37;;5377:67;;5412:31;5377:67;:34;:67;:::i;:::-;5337:107;;5454:37;5494:166;5541:9;:26;;;5581:9;:26;;;5621:29;5494:33;:166::i;:::-;5454:206;;5670:38;5711:69;5747:32;5711:10;:27;;;:35;;:69;;;;:::i;:::-;5670:110;;5790:38;5831:169;5878:10;:27;;;5919:10;:27;;;5960:30;5831:33;:169::i;:::-;5790:210;;6123:25;6119:718;;;6185:302;6246:9;6273:10;6301:29;6348;6395:30;6443;6185:43;:302::i;:::-;6164:323;;6119:718;;;6539:287;6585:9;6612:10;6640:29;6687;6734:30;6782;6539:28;:287::i;:::-;6518:308;;6119:718;6972:23;;:46;7032:26;;;;7072:18;;;;6925:175;;6972:46;7032:26;6925:33;:175::i;:::-;6886:23;;:36;;:214;7196:23;;:46;;;7256:26;;;;7296:18;;;;7149:175;;7196:46;7256:26;7149:33;:175::i;:::-;7110:23;;:36;;:214;7462:24;;;;:47;7523:27;;;;7564:19;;;;7415:178;;7462:47;7523:27;7415:33;:178::i;:::-;7375:18;:24;;;:37;;:218;;;;;7643:178;7690:18;:24;;;:47;;;7751:10;:27;;;7792:10;:19;;;7643:33;:178::i;:::-;7603:24;;;;:37;;:218;8004:19;8026:39;:8;8043:21;8026:39;:16;:39;:::i;:::-;8075:23;;:39;;;;:53;;;8138:24;;;;:40;:54;-1:-1:-1;;;;;4804:3462:4;;;;;;;;;:::o;10555:910:27:-;10894:34;;;;10858:71;;:27;;:71;:35;:71;:::i;:::-;10838:6;:17;10845:9;10838:17;;;;;;;;;;;:91;;;;11176:9;10995:5;:25;;;-1:-1:-1;;;;;10945:513:27;10963:5;:18;;;-1:-1:-1;;;;;10945:513:27;;11034:5;:20;;;11068:5;:20;;;11102:5;:23;;;11139:5;:23;;;11199:12;11225:10;11249:11;:34;;;11297:11;:34;;;11345:11;:24;;;11383:11;:24;;;11421:11;:27;;;10945:513;;;;;;;;;;;;;;;;;;;;;;;;;10555:910;;;;;:::o;19127:3954:28:-;19466:22;;19526:23;;19593:29;;;;;19667:30;;;;19814:25;;;;19914:23;;:46;;;19751:219;;19786:14;;19526:23;;19466:22;;19751:21;:219::i;:::-;20024:218;20059:13;20086:9;:24;;;20124:16;20154:17;20185:18;:24;;;:47;;;20024:21;:218::i;:::-;20303:221;20338:14;20366:10;:28;;;20408:17;20439:24;20477:18;:24;;;:37;;;20303:21;:221::i;:::-;20583:216;20618:13;20645:9;:27;;;20686:16;20716:23;20753:18;:23;;;:36;;;20583:21;:216::i;:::-;20843:207;20878:13;20905:9;:24;;;20943:16;20973:12;20999:18;:41;;;20843:21;:207::i;:::-;21060:211;21095:14;21123:10;:25;;;21162:17;21193:12;21219:18;:42;;;21060:21;:211::i;:::-;21326:23;21352:224;21385:13;21412:14;21440:18;:23;;;:39;;;21493:16;21523:17;21554:12;21352:19;:224::i;:::-;21326:250;;21678:18;21673:151;;21712:23;;21754:1;21712:39;;;;:43;;;21769:24;;;;:40;;;:44;21673:151;21908:24;-1:-1:-1;;;;;21881:51:28;:23;-1:-1:-1;;;;;21881:51:28;;:131;;;;-1:-1:-1;21983:28:28;;;;;21948:27;;;;:64;;;:34;:64;:::i;:::-;21864:1211;;;22153:283;22192:13;22223:9;:27;;;22268:12;22298:23;22339:83;22384:18;:24;;;:37;;;22339:18;:23;;;:36;;;:44;;:83;;;;:::i;:::-;22153:21;:283::i;:::-;21864:1211;;;22521:240;22560:14;22592:10;:28;;;22638:12;22668:24;22710:18;:24;;;:37;;;22521:21;:240::i;:::-;22828:236;22867:13;22898:9;:27;;;22943:12;22973:23;23014:18;:23;;;:36;;;22828:21;:236::i;:::-;19127:3954;;;;;;;;;;;:::o;2542:1786:8:-;2769:16;;;;;2810;;2868:33;;;;;2930:20;;;;;2749:17;2984:25;;;;3417:11;;3402:13;;;3392:37;;;;3497:9;;1160:66;3520:26;;3647:15;;;3640:29;;;;3757:15;;;3750:46;;;;3884:15;;;3877:33;;;;-1:-1:-1;;;;;4016:62:8;;;3998:16;;;3991:88;;;;4129:3;4117:16;;4110:34;4285:3;4267:22;;;2542:1786::o;2889:890:15:-;3318:2;3312:9;-1:-1:-1;;;3335:82:15;;3467:1;3455:14;;3448:40;;;;3585:2;3573:15;;3566:35;3737:2;3719:21;;;2889:890::o;16158:404:30:-;16396:159;;16353:20;;-1:-1:-1;;;16432:59:30;16396:159;;16505:11;;16530:15;;16396:159;;;;19630:1395;19885:16;;19831:12;;19933:2;19915:20;;19911:278;;;19951:227;19973:204;20027:56;20101:4;20123:13;20154:9;19973:36;:204::i;19951:227::-;20344:24;20371:43;:9;-1:-1:-1;;20393:20:30;;20371:43;:21;:43;:::i;:::-;-1:-1:-1;;;;;20478:32:30;;;;;;;:17;:32;;;;;;;;:50;;;;;;;;;;20344:70;;-1:-1:-1;20478:50:30;;20473:240;;20544:158;20566:135;20640:13;20671:16;20566:56;:135::i;20544:158::-;20732:262;20796:16;20826:4;20844:9;20867:2;20732:50;:262::i;:::-;20722:272;19630:1395;-1:-1:-1;;;;;;;19630:1395:30:o;18679:479::-;18855:12;18893:234;18957:13;18984:4;19002:9;19025:1;18893:50;:234::i;1866:135:19:-;1951:7;1985:1;1981;:5;:13;;1993:1;1981:13;;;-1:-1:-1;1989:1:19;;1974:20;-1:-1:-1;1866:135:19:o;2505:1128:4:-;2730:30;;:::i;:::-;2825:34;;;:59;;;3014:22;;;;3050;;;;2931:151;;2862:22;;2931:33;:151::i;:::-;2894:188;;3202:22;;;;3238:14;;;;3119:143;;3166:22;;3119:33;:143::i;:::-;3092:24;;;:170;3382:22;;;;3418:14;;;;3299:143;;3346:22;;3299:33;:143::i;:::-;3272:24;;;:170;3558:39;:8;3575:21;3558:39;:16;:39;:::i;:::-;3528:27;;;:69;2505:1128;;;;;;:::o;16002:1585:27:-;16245:194;16280:9;16303:5;:20;;;16337:12;16363:5;:18;;;16395:11;:34;;;16245:21;:194::i;:::-;16485;16520:9;16543:5;:20;;;16577:5;:18;;;16609:12;16635:11;:34;;;16485:21;:194::i;:::-;16736;16771:9;16794:5;:23;;;16831:12;16857:5;:25;;;16896:11;:24;;;16736:21;:194::i;:::-;16987:200;17022:9;17045:5;:23;;;17082:5;:18;;;17114:5;:25;;;17153:11;:24;;;16987:21;:200::i;:::-;17226:22;17251:153;17286:9;17309:11;:27;;;17350:5;:18;;;17382:12;17251:21;:153::i;:::-;17226:178;;17506:17;17501:80;;17569:1;17539:27;;;:31;16002:1585;;;;;:::o;5279:2665:7:-;5485:20;;;;5545;;;;5608:23;;;;5674;;;;5369:14;;1422:66;;5485:20;;5545;;6578:2;6568:13;;6565:2;;;6600:9;6565:2;-1:-1:-1;;6731:14:7;;6954:11;;6781:3;6770:15;;6991:11;;6821:3;6810:15;;7028:11;;6861:3;6850:15;;7065:11;;6901:3;6890:15;;7102:11;;7156:24;;;7241:21;;6742:2;7216:23;;;7206:57;7193:71;;7364:21;;7339:23;;;7329:57;;;;7316:71;;7490:24;;7462:26;;;7452:63;;;;7439:77;;7616:24;;7588:26;;;;7578:63;;;;7565:77;;7717:3;7701:20;;7758:19;;;;7790;;7822;;;7854;;7886;;;;7701:20;-1:-1:-1;5279:2665:7;;;:::o;15669:338:30:-;15865:135;;15822:20;;-1:-1:-1;;;15901:47:30;15865:135;;15962:5;;15981:9;;15865:135;;;;11442:385:3;11635:12;3252:10;11706:35;;11755:9;11778;11801;11670:150;;;;;;;;;;;16814:871:12;16934:13;16978:5;16986:1;16978:9;16967:1;:8;:20;16963:290;;;17003:239;17025:216;17087:87;17192:1;:8;17218:5;17226:1;17218:9;17025:44;:216::i;17003:239::-;-1:-1:-1;17426:13:12;17329:2;17426:13;17420:20;-1:-1:-1;;;;;;17567:79:12;;16814:871::o;11833:369:3:-;12010:12;3413:10;12081:35;;12130:9;12153;12176;12045:150;;;;;;;;;;;12532:319;12685:12;3700:10;12756:26;;12796:9;12819:15;12720:124;;;;;;;;;;13192:397;13378:12;4029:10;13449:36;;13499:15;13528:14;13556:16;13413:169;;;;;;;;;;;13595:359;13760:12;4200:10;13831:42;;13887:15;13916:21;13795:152;;;;;;;;;;10039:395;10233:12;2666:10;10304:39;;10357:9;10380;10403:14;10268:159;;;;;;;;;;;1292:378:13;1480:12;1232:10;1551:37;;1602:9;1625:6;1645:8;1515:148;;;;;;;;;;;18060:153:12;18180:17;;18166:41::o;9306:410:3:-;9506:12;2355:10;9577:31;;9622:4;9640:13;9667:9;9690;9541:168;;;;;;;;;;;;9722:311;9870:12;2495:10;9941:27;;9982:9;10005:11;9905:121;;;;;;;;;;12208:318;12353:12;3561:10;12424:30;;12468:13;12495:14;12388:131;;;;;;;;;;1141:603:5;1309:21;1350:110;1388:9;1415:11;1444:6;1350:20;:110::i;:::-;1346:289;;;1476:148;1498:125;1547:9;1574:11;1603:6;1498:31;:125::i;1476:148::-;1661:46;1695:11;1661:25;:9;1679:6;1661:25;:17;:25;:::i;14339:4364:4:-;14717:44;;:::i;:::-;14945:62;;;15055;;;16229;;;16225:1694;;;16423:164;16468:9;16495:30;16543;16423:27;:164::i;:::-;16402:185;;16225:1694;;;16641:29;16608:30;:62;16604:1315;;;16782:23;;:78;;;16874:23;;:46;;:78;;;17334:27;;;;17379;;;;17283:184;;17334:27;16831:29;17283:33;:184::i;:::-;17233:24;;;;;;:234;;;;17481:24;;:47;:79;;;16604:1315;;;17678:230;17722:29;17769;17816:30;17864;17678:26;:230::i;:::-;17657:251;;16604:1315;18055:29;18051:237;;;18216:24;;;;;:47;;18144:23;;:46;:133;;;:54;:133;:::i;:::-;18100:41;;;:177;18051:237;18426:30;18422:239;;;18590:23;;:46;;;;;18517:24;;;;:47;:133;;;:55;:133;:::i;:::-;18472:42;;;:178;18422:239;-1:-1:-1;;14339:4364:4;;;;;;;;;:::o;10157:3363::-;10520:44;;:::i;:::-;11497:30;11465:29;:62;11461:1794;;;11615:164;11660:9;11687:30;11735;11615:27;:164::i;:::-;11594:185;;11461:1794;;;11832:30;11800:29;:62;11796:1459;;;11928:23;;:78;;;12020:23;;:46;;;;:78;;;12112:24;;;:79;;;12489:27;;;;12534;;;;12439:234;;12489:27;12069:29;12439:32;:234::i;:::-;12389:24;;;;;:47;:284;11796:1459;;;13014:230;13058:29;13105;13152:30;13200;13014:26;:230::i;:::-;12993:251;;11796:1459;13420:24;;;;;:47;;13352:23;;:46;:125;;;:54;:125;:::i;:::-;13308:41;;;:169;10157:3363;;;;;;;;:::o;4299:1259:29:-;4588:20;;4545:4;;-1:-1:-1;;;;;4588:20:29;4622:26;;4618:934;;4819:21;4793:23;4936:224;4983:10;5011:12;4819:21;5074:11;5103:13;5134:12;4936:29;:224::i;:::-;4916:244;;5237:236;5284:10;5312:12;5360:9;5342:15;:27;5387:11;5416:13;5447:12;5237:29;:236::i;:::-;;5494:4;5487:11;;;;;;;4618:934;5536:5;5529:12;;;;;10136:403:12;10257:10;10486:3;:10;10472:3;:10;:24;:60;;;;-1:-1:-1;;10518:14:12;;;;;;;10500;;;;;;;;;;:32;;10136:403::o;10753:1071::-;10874:14;10919:5;10927:2;10919:10;10908:1;:8;:21;10904:321;;;10945:269;10967:246;11029:89;11136:1;:8;11162:5;11170:2;11162:10;10967:44;:246::i;10945:269::-;-1:-1:-1;11726:13:12;11471:2;11726:13;11720:20;-1:-1:-1;;;;;11716:69:12;;10753:1071::o;8501:354:3:-;8663:12;2031:10;8734:47;;8795:13;8822:16;8698:150;;;;;;;;;;21625:1353:30;21968:16;;21880:4;;22049:65;21968:9;22071:42;;;22049:65;:21;:65;:::i;:::-;22148:139;;22124:21;;-1:-1:-1;;;22184:52:30;22148:139;;22250:4;;22268:9;;22148:139;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;22148:139:30;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;22148:139:30;;;179:29:-1;;;;160:49;;;22148:139:30;-1:-1:-1;22342:38:30;:9;22364:15;22342:38;:21;:38;:::i;:::-;22440:15;22457:23;22484:24;-1:-1:-1;;;;;22484:35:30;22520:8;22484:45;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;22439:90:30;;;;22618:10;:37;;;;;22632:10;:17;22653:2;22632:23;22618:37;22614:122;;;-1:-1:-1;;;22678:24:30;:10;22700:1;22678:24;:21;:24;:::i;:::-;-1:-1:-1;;;;;22678:47:30;;;22671:54;;;;;;;;22614:122;22792:179;22814:156;22871:24;22909:4;22927:9;22950:10;22814:43;:156::i;22792:179::-;21625:1353;;;;;;;;;;:::o;3140:619:29:-;3370:20;;3327:4;;-1:-1:-1;;;;;3370:20:29;3404:26;;3400:353;;3446:228;3493:9;3520:12;3550:21;3589:11;3618:12;3648;3446:29;:228::i;:::-;;3695:4;3688:11;;;;;3400:353;3737:5;3730:12;;;;;4566:1880:5;4729:12;4761:16;4757:109;;4793:62;4815:39;:37;:39::i;4793:62::-;5676:11;;;:29;;-1:-1:-1;5691:14:5;;5676:29;5672:72;;;-1:-1:-1;5728:5:5;5721:12;;5672:72;6239:17;6322:11;6259:84;;;;;6299:9;6279:6;6259:84;6239:104;-1:-1:-1;6390:25:5;:9;6408:6;6390:25;:17;:25;:::i;:::-;6363:23;:9;6381:4;6363:23;:17;:23;:::i;:::-;:52;;;4566:1880;-1:-1:-1;;;;;4566:1880:5:o;520:335:6:-;676:12;312:10;747:23;;784:9;807:11;832:6;711:137;;;;;;;;;;;20995:1066:4;21221:44;;:::i;:::-;21281:24;;;;;;:80;;;21371:24;:47;;:80;;;21461:23;;:46;:79;;;21898:26;;;;21938;;;;21851:167;;21898:26;21331:30;21851:33;:167::i;:::-;21802:23;;:216;20995:1066;;;;;:::o;19492:790::-;19770:44;;:::i;:::-;19893:23;;:78;;;;19981:23;;:46;;;;:78;;;;20069:24;;;;;:80;;;;20159:24;;:47;;;:80;19893:23;19492:790::o;2067:847:5:-;2234:21;2275:109;2312:9;2339:11;2368:6;2275:19;:109::i;:::-;2271:288;;;2400:148;2422:125;2471:9;2498:11;2527:6;2422:31;:125::i;2400:148::-;2772:104;2864:11;2772:70;2819:22;2864:11;2839:1;2819:22;:19;:22;:::i;6036:1219:29:-;6294:17;6515:11;6496:15;:30;6492:84;;-1:-1:-1;6554:11:29;6492:84;6619:167;;6585:31;;-1:-1:-1;;;6655:44:29;6619:167;;6713:12;;6739;;6765:11;;6619:167;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6619:167:29;;;;-1:-1:-1;;;;;6619:167:29;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;6619:167:29;6585:201;;6851:15;6868:23;6895:12;-1:-1:-1;;;;;6895:17:29;6919:9;6930:18;6895:54;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;6850:99:29;;;;6964:10;6959:264;;6990:222;7012:199;7071:9;7098:11;7127:12;7157;7187:10;7012:41;:199::i;6990:222::-;-1:-1:-1;;;6036:1219:29;;;;;;;;:::o;8861:439:3:-;9078:12;2193:10;9149:32;;9195:24;9233:4;9251:9;9274;9113:180;;;;;;;;;;;;372:142:6;485:22;;;;;;;;;;;;-1:-1:-1;;;485:22:6;;;;372:142;:::o;6703:937:5:-;6865:12;6897:16;6893:109;;6929:62;6951:39;:37;:39::i;6929:62::-;7066:11;;;:29;;-1:-1:-1;7081:14:5;;7066:29;7062:257;;;-1:-1:-1;7303:5:5;7296:12;;7062:257;7367:17;7450:11;7387:84;;;;;7427:9;7407:6;7387:84;7367:104;-1:-1:-1;7526:11:5;7493:30;7526:11;7367:104;7493:30;:19;:30;:::i;:::-;:44;;;;;;;-1:-1:-1;7584:25:5;:9;7602:6;7584:25;:17;:25;:::i;14384:472:3:-;14614:12;4668:10;14685:31;;14730:9;14753:11;14778:12;14804;14830:9;14649:200;;;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;14649:200:3;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;14649:200:3;;;179:29:-1;;;;160:49;;;14649:200:3;-1:-1:-1;14384:472:3;;;;;;;:::o;1057:384:25:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1057:384:25;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;1057:384:25;;;;;;-1:-1:-1;;;;;1057:384:25;;;;;;-1:-1:-1;;;;;1057:384:25;;;;;;-1:-1:-1;;;;;1057:384:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;891:693;;1013:3;1006:4;998:6;994:17;990:27;980:2;;1031:1;1028;1021:12;980:2;1068:6;1055:20;1090:85;1105:69;1167:6;1105:69;;1090:85;1203:21;;;1247:4;1235:17;;;;1081:94;;-1:-1;1260:14;;1235:17;1355:1;1340:238;1365:6;1362:1;1359:13;1340:238;;;1448:3;1435:17;1427:6;1423:30;1472:42;1510:3;1498:10;1472:42;;;1460:55;;-1:-1;1538:4;1529:14;;;;1557;;;;;1387:1;1380:9;1340:238;;1624:738;;1761:3;1754:4;1746:6;1742:17;1738:27;1728:2;;1779:1;1776;1769:12;1728:2;1816:6;1803:20;1838:100;1853:84;1930:6;1853:84;;1838:100;1966:21;;;2010:4;1998:17;;;;1829:109;;-1:-1;2023:14;;1998:17;2118:1;2103:253;2128:6;2125:1;2122:13;2103:253;;;2211:3;2198:17;2190:6;2186:30;2235:57;2288:3;2276:10;2235:57;;;2223:70;;-1:-1;2316:4;2307:14;;;;2335;;;;;2150:1;2143:9;2103:253;;2426:774;;2575:3;2568:4;2560:6;2556:17;2552:27;2542:2;;2593:1;2590;2583:12;2542:2;2630:6;2617:20;2652:112;2667:96;2756:6;2667:96;;2652:112;2792:21;;;2836:4;2824:17;;;;2643:121;;-1:-1;2849:14;;2824:17;2944:1;2929:265;2954:6;2951:1;2948:13;2929:265;;;3037:3;3024:17;3016:6;3012:30;3061:69;3126:3;3114:10;3061:69;;;3049:82;;-1:-1;3154:4;3145:14;;;;3173;;;;;2976:1;2969:9;2929:265;;3226:707;;3343:3;3336:4;3328:6;3324:17;3320:27;3310:2;;3361:1;3358;3351:12;3310:2;3398:6;3385:20;3420:80;3435:64;3492:6;3435:64;;3420:80;3411:89;;3517:5;3542:6;3535:5;3528:21;3572:4;3564:6;3560:17;3550:27;;3594:4;3589:3;3585:14;3578:21;;3647:6;3694:3;3686:4;3678:6;3674:17;3669:3;3665:27;3662:36;3659:2;;;3711:1;3708;3701:12;3659:2;3736:1;3721:206;3746:6;3743:1;3740:13;3721:206;;;3804:3;3826:37;3859:3;3847:10;3826:37;;;3814:50;;-1:-1;3887:4;3878:14;;;;3906;;;;;3768:1;3761:9;3721:206;;3941:124;4005:20;;4030:30;4005:20;4030:30;;4072:130;4139:20;;4164:33;4139:20;4164:33;;4209:128;4275:20;;4300:32;4275:20;4300:32;;4344:132;4421:13;;4439:32;4421:13;4439:32;;4484:432;;4581:3;4574:4;4566:6;4562:17;4558:27;4548:2;;4599:1;4596;4589:12;4548:2;4636:6;4623:20;4658:60;4673:44;4710:6;4673:44;;4658:60;4649:69;;4738:6;4731:5;4724:21;4774:4;4766:6;4762:17;4807:4;4800:5;4796:16;4842:3;4833:6;4828:3;4824:16;4821:25;4818:2;;;4859:1;4856;4849:12;4818:2;4869:41;4903:6;4898:3;4893;4869:41;;;4541:375;;;;;;;;5413:1029;;5538:4;5526:9;5521:3;5517:19;5513:30;5510:2;;;5556:1;5553;5546:12;5510:2;5574:20;5589:4;5574:20;;;5565:29;-1:-1;5662:1;5694:60;5750:3;5730:9;5694:60;;;5669:86;;-1:-1;5834:2;5867:60;5923:3;5899:22;;;5867:60;;;5860:4;5853:5;5849:16;5842:86;5776:163;5997:2;6030:60;6086:3;6077:6;6066:9;6062:22;6030:60;;;6023:4;6016:5;6012:16;6005:86;5949:153;6160:2;6193:60;6249:3;6240:6;6229:9;6225:22;6193:60;;;6186:4;6179:5;6175:16;6168:86;6112:153;6326:3;6360:60;6416:3;6407:6;6396:9;6392:22;6360:60;;;6353:4;6346:5;6342:16;6335:86;6275:157;5504:938;;;;;6477:2715;;6586:6;6574:9;6569:3;6565:19;6561:32;6558:2;;;6606:1;6603;6596:12;6558:2;6624:22;6639:6;6624:22;;;6615:31;-1:-1;6704:1;6736:49;6781:3;6761:9;6736:49;;;6711:75;;-1:-1;6855:2;6888:49;6933:3;6909:22;;;6888:49;;;6881:4;6874:5;6870:16;6863:75;6807:142;7014:2;7047:49;7092:3;7083:6;7072:9;7068:22;7047:49;;;7040:4;7033:5;7029:16;7022:75;6959:149;7167:2;7200:49;7245:3;7236:6;7225:9;7221:22;7200:49;;;7193:4;7186:5;7182:16;7175:75;7118:143;7323:3;7357:49;7402:3;7393:6;7382:9;7378:22;7357:49;;;7350:4;7343:5;7339:16;7332:75;7271:147;7480:3;7514:49;7559:3;7550:6;7539:9;7535:22;7514:49;;;7507:4;7500:5;7496:16;7489:75;7428:147;7629:3;7663:49;7708:3;7699:6;7688:9;7684:22;7663:49;;;7656:4;7649:5;7645:16;7638:75;7585:139;7778:3;7812:49;7857:3;7848:6;7837:9;7833:22;7812:49;;;7805:4;7798:5;7794:16;7787:75;7734:139;7940:3;7976:49;8021:3;8012:6;8001:9;7997:22;7976:49;;;7967:6;7960:5;7956:18;7949:77;7883:154;8087:3;8123:49;8168:3;8159:6;8148:9;8144:22;8123:49;;;8114:6;8107:5;8103:18;8096:77;8047:137;8272:3;8261:9;8257:19;8244:33;-1:-1;;;;;8289:6;8286:30;8283:2;;;8329:1;8326;8319:12;8283:2;8366:54;8416:3;8407:6;8396:9;8392:22;8366:54;;;8357:6;8350:5;8346:18;8339:82;8194:238;8520:3;8509:9;8505:19;8492:33;-1:-1;;;;;8537:6;8534:30;8531:2;;;8577:1;8574;8567:12;8531:2;8614:54;8664:3;8655:6;8644:9;8640:22;8614:54;;;8605:6;8598:5;8594:18;8587:82;8442:238;8771:3;8760:9;8756:19;8743:33;-1:-1;;;;;8788:6;8785:30;8782:2;;;8828:1;8825;8818:12;8782:2;8865:54;8915:3;8906:6;8895:9;8891:22;8865:54;;;8856:6;8849:5;8845:18;8838:82;8690:241;9022:3;9011:9;9007:19;8994:33;-1:-1;;;;;9039:6;9036:30;9033:2;;;9079:1;9076;9069:12;9033:2;9116:54;9166:3;9157:6;9146:9;9142:22;9116:54;;;9107:6;9100:5;9096:18;9089:82;8941:241;6552:2640;;;;;12005:1028;;12126:4;12114:9;12109:3;12105:19;12101:30;12098:2;;;12144:1;12141;12134:12;12098:2;12162:20;12177:4;12162:20;;;12153:29;-1:-1;12232:1;12264:49;12309:3;12289:9;12264:49;;;12239:75;;-1:-1;12392:2;12425:49;12470:3;12446:22;;;12425:49;;;12418:4;12411:5;12407:16;12400:75;12335:151;12540:2;12573:49;12618:3;12609:6;12598:9;12594:22;12573:49;;;12566:4;12559:5;12555:16;12548:75;12496:138;12693:2;12726:49;12771:3;12762:6;12751:9;12747:22;12726:49;;;12719:4;12712:5;12708:16;12701:75;12644:143;12865:3;12854:9;12850:19;12837:33;-1:-1;;;;;12882:6;12879:30;12876:2;;;12922:1;12919;12912:12;12876:2;12957:54;13007:3;12998:6;12987:9;12983:22;12957:54;;14268:134;14346:13;;14364:33;14346:13;14364:33;;14409:241;;14513:2;14501:9;14492:7;14488:23;14484:32;14481:2;;;14529:1;14526;14519:12;14481:2;14564:1;14581:53;14626:7;14606:9;14581:53;;14657:366;;;14778:2;14766:9;14757:7;14753:23;14749:32;14746:2;;;14794:1;14791;14784:12;14746:2;14829:1;14846:53;14891:7;14871:9;14846:53;;;14836:63;;14808:97;14936:2;14954:53;14999:7;14990:6;14979:9;14975:22;14954:53;;;14944:63;;14915:98;14740:283;;;;;;15030:360;;;15148:2;15136:9;15127:7;15123:23;15119:32;15116:2;;;15164:1;15161;15154:12;15116:2;15199:1;15216:53;15261:7;15241:9;15216:53;;;15206:63;;15178:97;15306:2;15324:50;15366:7;15357:6;15346:9;15342:22;15324:50;;15397:1171;;;;;15657:3;15645:9;15636:7;15632:23;15628:33;15625:2;;;15674:1;15671;15664:12;15625:2;15709:31;;-1:-1;;;;;15749:30;;15746:2;;;15792:1;15789;15782:12;15746:2;15812:83;15887:7;15878:6;15867:9;15863:22;15812:83;;;15802:93;;15688:213;15960:2;15949:9;15945:18;15932:32;-1:-1;;;;;15976:6;15973:30;15970:2;;;16016:1;16013;16006:12;15970:2;16036:78;16106:7;16097:6;16086:9;16082:22;16036:78;;;16026:88;;15911:209;16179:2;16168:9;16164:18;16151:32;-1:-1;;;;;16195:6;16192:30;16189:2;;;16235:1;16232;16225:12;16189:2;16255:78;16325:7;16316:6;16305:9;16301:22;16255:78;;;16245:88;;16130:209;16398:2;16387:9;16383:18;16370:32;-1:-1;;;;;16414:6;16411:30;16408:2;;;16454:1;16451;16444:12;16408:2;16474:78;16544:7;16535:6;16524:9;16520:22;16474:78;;;16464:88;;16349:209;15619:949;;;;;;;;16575:417;;16724:2;16712:9;16703:7;16699:23;16695:32;16692:2;;;16740:1;16737;16730:12;16692:2;16775:31;;-1:-1;;;;;16815:30;;16812:2;;;16858:1;16855;16848:12;16812:2;16878:98;16968:7;16959:6;16948:9;16944:22;16878:98;;16999:1261;;;;;17304:3;17292:9;17283:7;17279:23;17275:33;17272:2;;;17321:1;17318;17311:12;17272:2;17356:31;;-1:-1;;;;;17396:30;;17393:2;;;17439:1;17436;17429:12;17393:2;17459:98;17549:7;17540:6;17529:9;17525:22;17459:98;;;17449:108;;17335:228;17622:2;17611:9;17607:18;17594:32;-1:-1;;;;;17638:6;17635:30;17632:2;;;17678:1;17675;17668:12;17632:2;17698:98;17788:7;17779:6;17768:9;17764:22;17698:98;;;17688:108;;17573:229;17861:2;17850:9;17846:18;17833:32;-1:-1;;;;;17877:6;17874:30;17871:2;;;17917:1;17914;17907:12;17871:2;17937:83;18012:7;18003:6;17992:9;17988:22;17937:83;;;17927:93;;17812:214;18085:2;18074:9;18070:18;18057:32;-1:-1;;;;;18101:6;18098:30;18095:2;;;18141:1;18138;18131:12;18095:2;18161:83;18236:7;18227:6;18216:9;18212:22;18161:83;;18267:949;;;;18505:2;18493:9;18484:7;18480:23;18476:32;18473:2;;;18521:1;18518;18511:12;18473:2;18556:31;;-1:-1;;;;;18596:30;;18593:2;;;18639:1;18636;18629:12;18593:2;18659:98;18749:7;18740:6;18729:9;18725:22;18659:98;;;18649:108;;18535:228;18822:2;18811:9;18807:18;18794:32;-1:-1;;;;;18838:6;18835:30;18832:2;;;18878:1;18875;18868:12;18832:2;18898:78;18968:7;18959:6;18948:9;18944:22;18898:78;;;18888:88;;18773:209;19041:2;19030:9;19026:18;19013:32;-1:-1;;;;;19057:6;19054:30;19051:2;;;19097:1;19094;19087:12;19051:2;19117:83;19192:7;19183:6;19172:9;19168:22;19117:83;;;19107:93;;18992:214;18467:749;;;;;;19223:813;;;;19436:2;19424:9;19415:7;19411:23;19407:32;19404:2;;;19452:1;19449;19442:12;19404:2;19487:31;;-1:-1;;;;;19527:30;;19524:2;;;19570:1;19567;19560:12;19524:2;19590:98;19680:7;19671:6;19660:9;19656:22;19590:98;;;19580:108;;19466:228;19725:2;19743:53;19788:7;19779:6;19768:9;19764:22;19743:53;;20043:712;;;20251:2;20239:9;20230:7;20226:23;20222:32;20219:2;;;20267:1;20264;20257:12;20219:2;20302:31;;-1:-1;;;;;20342:30;;20339:2;;;20385:1;20382;20375:12;20339:2;20405:110;20507:7;20498:6;20487:9;20483:22;20405:110;;;20395:120;;20281:240;20580:2;20569:9;20565:18;20552:32;-1:-1;;;;;20596:6;20593:30;20590:2;;;20636:1;20633;20626:12;20590:2;20656:83;20731:7;20722:6;20711:9;20707:22;20656:83;;20762:241;;20866:2;20854:9;20845:7;20841:23;20837:32;20834:2;;;20882:1;20879;20872:12;20834:2;20917:1;20934:53;20979:7;20959:9;20934:53;;21010:366;;;21131:2;21119:9;21110:7;21106:23;21102:32;21099:2;;;21147:1;21144;21137:12;21099:2;21182:1;21199:53;21244:7;21224:9;21199:53;;21383:595;;;;21530:2;21518:9;21509:7;21505:23;21501:32;21498:2;;;21546:1;21543;21536:12;21498:2;21581:1;21598:53;21643:7;21623:9;21598:53;;;21588:63;;21560:97;21688:2;21706:53;21751:7;21742:6;21731:9;21727:22;21706:53;;;21696:63;;21667:98;21824:2;21813:9;21809:18;21796:32;-1:-1;;;;;21840:6;21837:30;21834:2;;;21880:1;21877;21870:12;21834:2;21900:62;21954:7;21945:6;21934:9;21930:22;21900:62;;21985:239;;22088:2;22076:9;22067:7;22063:23;22059:32;22056:2;;;22104:1;22101;22094:12;22056:2;22139:1;22156:52;22200:7;22180:9;22156:52;;22231:261;;22345:2;22333:9;22324:7;22320:23;22316:32;22313:2;;;22361:1;22358;22351:12;22313:2;22396:1;22413:63;22468:7;22448:9;22413:63;;22499:314;;22639:3;22627:9;22618:7;22614:23;22610:33;22607:2;;;22656:1;22653;22646:12;22607:2;22691:1;22708:89;22789:7;22769:9;22708:89;;22820:375;;22948:2;22936:9;22927:7;22923:23;22919:32;22916:2;;;22964:1;22961;22954:12;22916:2;22999:31;;-1:-1;;;;;23039:30;;23036:2;;;23082:1;23079;23072:12;23036:2;23102:77;23171:7;23162:6;23151:9;23147:22;23102:77;;23202:604;;;23356:2;23344:9;23335:7;23331:23;23327:32;23324:2;;;23372:1;23369;23362:12;23324:2;23407:31;;-1:-1;;;;;23447:30;;23444:2;;;23490:1;23487;23480:12;23444:2;23510:77;23579:7;23570:6;23559:9;23555:22;23510:77;;;23500:87;;23386:207;23652:2;23641:9;23637:18;23624:32;-1:-1;;;;;23668:6;23665:30;23662:2;;;23708:1;23705;23698:12;23662:2;23728:62;23782:7;23773:6;23762:9;23758:22;23728:62;;23813:1093;;;;;24034:3;24022:9;24013:7;24009:23;24005:33;24002:2;;;24051:1;24048;24041:12;24002:2;24086:31;;-1:-1;;;;;24126:30;;24123:2;;;24169:1;24166;24159:12;24123:2;24189:77;24258:7;24249:6;24238:9;24234:22;24189:77;;;24179:87;;24065:207;24331:2;24320:9;24316:18;24303:32;-1:-1;;;;;24347:6;24344:30;24341:2;;;24387:1;24384;24377:12;24341:2;24407:77;24476:7;24467:6;24456:9;24452:22;24407:77;;;24397:87;;24282:208;24549:2;24538:9;24534:18;24521:32;-1:-1;;;;;24565:6;24562:30;24559:2;;;24605:1;24602;24595:12;24559:2;24625:62;24679:7;24670:6;24659:9;24655:22;24625:62;;;24615:72;;24500:193;24752:2;24741:9;24737:18;24724:32;-1:-1;;;;;24768:6;24765:30;24762:2;;;24808:1;24805;24798:12;24762:2;24828:62;24882:7;24873:6;24862:9;24858:22;24828:62;;24913:729;;;;25084:2;25072:9;25063:7;25059:23;25055:32;25052:2;;;25100:1;25097;25090:12;25052:2;25135:31;;-1:-1;;;;;25175:30;;25172:2;;;25218:1;25215;25208:12;25172:2;25238:77;25307:7;25298:6;25287:9;25283:22;25238:77;;;25228:87;;25114:207;25352:2;25370:53;25415:7;25406:6;25395:9;25391:22;25370:53;;25649:628;;;25815:2;25803:9;25794:7;25790:23;25786:32;25783:2;;;25831:1;25828;25821:12;25783:2;25866:31;;-1:-1;;;;;25906:30;;25903:2;;;25949:1;25946;25939:12;25903:2;25969:89;26050:7;26041:6;26030:9;26026:22;25969:89;;26533:177;;26644:60;26700:3;26692:6;26644:60;;26719:277;;26856:100;26952:3;26944:6;26856:100;;;-1:-1;;26985:4;26976:14;;26849:147;27004:142;27095:45;27134:5;27095:45;;;27090:3;27083:58;27077:69;;;27153:103;27226:24;27244:5;27226:24;;27410:888;;27565:59;27618:5;27565:59;;;27637:91;27721:6;27716:3;27637:91;;;27630:98;;27751:3;27793:4;27785:6;27781:17;27776:3;27772:27;27820:61;27875:5;27820:61;;;27901:7;27929:1;27914:345;27939:6;27936:1;27933:13;27914:345;;;28001:9;27995:4;27991:20;27986:3;27979:33;28046:6;28040:13;28068:74;28137:4;28122:13;28068:74;;;28060:82;;28159:65;28217:6;28159:65;;;28247:4;28238:14;;;;;28149:75;-1:-1;;27961:1;27954:9;27914:345;;;-1:-1;28272:4;;27544:754;-1:-1;;;;;;;27544:754;28389:890;;28584:79;28657:5;28584:79;;;28676:111;28780:6;28775:3;28676:111;;;28669:118;;28808:81;28883:5;28808:81;;;28909:7;28937:1;28922:335;28947:6;28944:1;28941:13;28922:335;;;29014:6;29008:13;29035:113;29144:3;29129:13;29035:113;;;29028:120;;29165:85;29243:6;29165:85;;;29155:95;-1:-1;;28969:1;28962:9;28922:335;;;-1:-1;29270:3;;28563:716;-1:-1;;;;;28563:716;29370:854;;29551:75;29620:5;29551:75;;;29639:101;29733:6;29728:3;29639:101;;;29632:108;;29761:77;29832:5;29761:77;;;29858:7;29886:1;29871:331;29896:6;29893:1;29890:13;29871:331;;;29963:6;29957:13;29984:113;30093:3;30078:13;29984:113;;;29977:120;;30114:81;30188:6;30114:81;;;30104:91;-1:-1;;29918:1;29911:9;29871:331;;30232:104;30309:21;30324:5;30309:21;;30343:103;30416:24;30434:5;30416:24;;30573:152;30674:45;30694:24;30712:5;30694:24;;;30674:45;;30732:110;30813:23;30830:5;30813:23;;30849:343;;30959:38;30991:5;30959:38;;;31009:70;31072:6;31067:3;31009:70;;;31002:77;;31084:52;31129:6;31124:3;31117:4;31110:5;31106:16;31084:52;;;31157:29;31179:6;31157:29;;;31148:39;;;;30939:253;-1:-1;;;30939:253;31199:356;;31327:38;31359:5;31327:38;;;31377:88;31458:6;31453:3;31377:88;;;31370:95;;31470:52;31515:6;31510:3;31503:4;31496:5;31492:16;31470:52;;;31534:16;;;;;31307:248;-1:-1;;31307:248;32581:188;32695:68;32757:5;32695:68;;32776:184;32888:66;32948:5;32888:66;;33138:182;33249:65;33308:5;33249:65;;33512:194;33629:71;33694:5;33629:71;;33713:146;33801:52;33847:5;33801:52;;34388:400;;34566:85;34648:2;34643:3;34566:85;;;34684:66;34664:87;;34779:2;34770:12;;34552:236;-1:-1;;34552:236;34797:320;;34957:67;35021:2;35016:3;34957:67;;;-1:-1;;;35037:43;;35108:2;35099:12;;34943:174;-1:-1;;34943:174;35226:1177;35475:23;;35409:4;35511:38;;;35226:1177;;35400:14;;;;35564:149;35400:14;35475:23;35564:149;;;35556:157;;35429:296;35799:4;35792:5;35788:16;35782:23;35851:3;35845:4;35841:14;35834:4;35829:3;35825:14;35818:38;35871:149;36015:4;36001:12;35871:149;;;35863:157;;35735:297;36123:4;36116:5;36112:16;36106:23;36135:63;36192:4;36187:3;36183:14;36169:12;36135:63;;;36042:162;36296:4;36289:5;36285:16;36279:23;36308:63;36365:4;36360:3;36356:14;36342:12;36308:63;;;-1:-1;36394:4;35382:1021;-1:-1;;;35382:1021;36487:1009;36722:23;;36638:4;36629:14;;;36751:63;36633:3;36722:23;36751:63;;;36658:162;36911:4;36904:5;36900:16;36894:23;36923:63;36980:4;36975:3;36971:14;36957:12;36923:63;;;36830:162;37073:4;37066:5;37062:16;37056:23;37085:63;37142:4;37137:3;37133:14;37119:12;37085:63;;;37002:152;37235:4;37228:5;37224:16;37218:23;37247:63;37304:4;37299:3;37295:14;37281:12;37247:63;;;37164:152;37400:4;37393:5;37389:16;37383:23;37412:63;37469:4;37464:3;37460:14;37446:12;37412:63;;38673:958;38906:23;;38838:6;38829:16;;;38935:117;38833:3;38906:23;38935:117;;;38860:198;39132:4;39125:5;39121:16;39115:23;39144:117;39255:4;39250:3;39246:14;39232:12;39144:117;;;39068:199;39358:4;39351:5;39347:16;39341:23;39370:65;39427:6;39422:3;39418:16;39404:12;39370:65;;;39277:164;39533:4;39526:5;39522:16;39516:23;39545:65;39602:6;39597:3;39593:16;39579:12;39545:65;;39699:686;39921:23;;39848:4;39839:14;;;39950:78;39843:3;39921:23;39950:78;;;39868:166;40112:4;40105:5;40101:16;40095:23;40124:63;40181:4;40176:3;40172:14;40158:12;40124:63;;;40044:149;40289:4;40282:5;40278:16;40272:23;40301:63;40358:4;40353:3;40349:14;40335:12;40301:63;;40445:2782;40670:23;;40445:2782;;40594:6;40585:16;;;40699:63;40589:3;40670:23;40699:63;;;40616:152;40849:4;40842:5;40838:16;40832:23;40861:63;40918:4;40913:3;40909:14;40895:12;40861:63;;;40778:152;41018:4;41011:5;41007:16;41001:23;41030:63;41087:4;41082:3;41078:14;41064:12;41030:63;;;40940:159;41181:4;41174:5;41170:16;41164:23;41193:63;41250:4;41245:3;41241:14;41227:12;41193:63;;;41109:153;41347:4;41340:5;41336:16;41330:23;41359:63;41416:4;41411:3;41407:14;41393:12;41359:63;;;41272:156;41513:4;41506:5;41502:16;41496:23;41525:63;41582:4;41577:3;41573:14;41559:12;41525:63;;;41438:156;41671:4;41664:5;41660:16;41654:23;41683:63;41740:4;41735:3;41731:14;41717:12;41683:63;;;41604:148;41829:4;41822:5;41818:16;41812:23;41841:63;41898:4;41893:3;41889:14;41875:12;41841:63;;;41762:148;42000:6;41993:5;41989:18;41983:25;42014:65;42071:6;42066:3;42062:16;42048:12;42014:65;;;41920:165;42158:6;42151:5;42147:18;42141:25;42172:65;42229:6;42224:3;42220:16;42206:12;42172:65;;;42095:148;42326:6;42319:5;42315:18;42309:25;42382:3;42376:4;42372:14;42363:6;42358:3;42354:16;42347:40;42402:67;42464:4;42450:12;42402:67;;;42394:75;;42253:228;42564:6;42557:5;42553:18;42547:25;42620:3;42614:4;42610:14;42601:6;42596:3;42592:16;42585:40;42640:67;42702:4;42688:12;42640:67;;;42632:75;;42491:228;42805:6;42798:5;42794:18;42788:25;42861:3;42855:4;42851:14;42842:6;42837:3;42833:16;42826:40;42881:67;42943:4;42929:12;42881:67;;;42873:75;;42729:231;43046:6;43039:5;43035:18;43029:25;43102:3;43096:4;43092:14;43083:6;43078:3;43074:16;43067:40;43122:67;43184:4;43170:12;43122:67;;43335:1079;43574:23;;43335:1079;;43508:4;43499:14;;;43603:63;43503:3;43574:23;43603:63;;;43528:144;43762:4;43755:5;43751:16;43745:23;43774:63;43831:4;43826:3;43822:14;43808:12;43774:63;;;43682:161;43920:4;43913:5;43909:16;43903:23;43932:63;43989:4;43984:3;43980:14;43966:12;43932:63;;;43853:148;44083:4;44076:5;44072:16;44066:23;44095:63;44152:4;44147:3;44143:14;44129:12;44095:63;;;44011:153;44237:4;44230:5;44226:16;44220:23;44289:3;44283:4;44279:14;44272:4;44267:3;44263:14;44256:38;44309:67;44371:4;44357:12;44309:67;;44651:107;44730:22;44746:5;44730:22;;44765:254;;44905:89;44990:3;44981:6;44905:89;;45295:511;;45522:148;45666:3;45522:148;;;45515:155;;45681:75;45752:3;45743:6;45681:75;;;-1:-1;45778:2;45769:12;;45503:303;-1:-1;45503:303;45813:213;45931:2;45916:18;;45945:71;45920:9;45989:6;45945:71;;46033:324;46179:2;46164:18;;46193:71;46168:9;46237:6;46193:71;;;46275:72;46343:2;46332:9;46328:18;46319:6;46275:72;;46364:435;46538:2;46523:18;;46552:71;46527:9;46596:6;46552:71;;;46634:72;46702:2;46691:9;46687:18;46678:6;46634:72;;;46717;46785:2;46774:9;46770:18;46761:6;46717:72;;46806:799;47062:3;47047:19;;47077:71;47051:9;47121:6;47077:71;;;47196:9;47190:4;47186:20;47181:2;47170:9;47166:18;47159:48;47221:76;47292:4;47283:6;47221:76;;;47213:84;;47345:9;47339:4;47335:20;47330:2;47319:9;47315:18;47308:48;47370:76;47441:4;47432:6;47370:76;;;47362:84;;47494:9;47488:4;47484:20;47479:2;47468:9;47464:18;47457:48;47519:76;47590:4;47581:6;47519:76;;47612:381;47790:2;47804:47;;;47775:18;;47865:118;47775:18;47969:6;47865:118;;48000:461;48218:2;48232:47;;;48203:18;;48293:158;48203:18;48437:6;48293:158;;48468:201;48580:2;48565:18;;48594:65;48569:9;48632:6;48594:65;;48676:213;48794:2;48779:18;;48808:71;48783:9;48852:6;48808:71;;48896:324;49042:2;49027:18;;49056:71;49031:9;49100:6;49056:71;;49227:715;49465:3;49450:19;;49480:71;49454:9;49524:6;49480:71;;;49562:72;49630:2;49619:9;49615:18;49606:6;49562:72;;;49682:9;49676:4;49672:20;49667:2;49656:9;49652:18;49645:48;49707:76;49778:4;49769:6;49707:76;;49949:324;50095:2;50080:18;;50109:71;50084:9;50153:6;50109:71;;;50191:72;50259:2;50248:9;50244:18;50235:6;50191:72;;50280:408;50444:2;50429:18;;50458:71;50433:9;50502:6;50458:71;;;50577:9;50571:4;50567:20;50562:2;50551:9;50547:18;50540:48;50602:76;50673:4;50664:6;50602:76;;50695:603;50905:2;50890:18;;50919:71;50894:9;50963:6;50919:71;;;51038:9;51032:4;51028:20;51023:2;51012:9;51008:18;51001:48;51063:76;51134:4;51125:6;51063:76;;;51055:84;;51187:9;51181:4;51177:20;51172:2;51161:9;51157:18;51150:48;51212:76;51283:4;51274:6;51212:76;;51305:354;51466:2;51451:18;;51480:71;51455:9;51524:6;51480:71;;;51562:87;51645:2;51634:9;51630:18;51621:6;51562:87;;51666:743;51914:3;51899:19;;51929:71;51903:9;51973:6;51929:71;;;52011:72;52079:2;52068:9;52064:18;52055:6;52011:72;;;52094;52162:2;52151:9;52147:18;52138:6;52094:72;;;52177;52245:2;52234:9;52230:18;52221:6;52177:72;;;52298:9;52292:4;52288:20;52282:3;52271:9;52267:19;52260:49;52323:76;52394:4;52385:6;52323:76;;52416:435;52590:2;52575:18;;52604:71;52579:9;52648:6;52604:71;;;52686:72;52754:2;52743:9;52739:18;52730:6;52686:72;;52858:539;53056:3;53041:19;;53071:71;53045:9;53115:6;53071:71;;;53153:68;53217:2;53206:9;53202:18;53193:6;53153:68;;;53232:72;53300:2;53289:9;53285:18;53276:6;53232:72;;;53315;53383:2;53372:9;53368:18;53359:6;53315:72;;53404:209;53520:2;53505:18;;53534:69;53509:9;53576:6;53534:69;;53620:320;53764:2;53749:18;;53778:69;53753:9;53820:6;53778:69;;53947:297;54083:2;54097:47;;;54068:18;;54158:76;54068:18;54220:6;54158:76;;54251:631;54471:3;54486:47;;;54456:19;;54547:76;54456:19;54609:6;54547:76;;;54539:84;;54634:72;54702:2;54691:9;54687:18;54678:6;54634:72;;;54717;54785:2;54774:9;54770:18;54761:6;54717:72;;54889:492;55071:2;55085:47;;;55056:18;;55146:76;55056:18;55208:6;55146:76;;;55138:84;;55270:9;55264:4;55260:20;55255:2;55244:9;55240:18;55233:48;55295:76;55366:4;55357:6;55295:76;;55388:603;55598:2;55612:47;;;55583:18;;55673:72;55583:18;55731:6;55673:72;;;55665:80;;55793:9;55787:4;55783:20;55778:2;55767:9;55763:18;55756:48;55818:72;55885:4;55876:6;55818:72;;;55810:80;;55901;55977:2;55966:9;55962:18;55953:6;55901:80;;55998:1653;56461:3;56476:47;;;56446:19;;56537:72;56446:19;56595:6;56537:72;;;56529:80;;56657:9;56651:4;56647:20;56642:2;56631:9;56627:18;56620:48;56682:72;56749:4;56740:6;56682:72;;;56674:80;;56802:9;56796:4;56792:20;56787:2;56776:9;56772:18;56765:48;56827:72;56894:4;56885:6;56827:72;;;56819:80;;56947:9;56941:4;56937:20;56932:2;56921:9;56917:18;56910:48;56972:72;57039:4;57030:6;56972:72;;;56964:80;;57055:73;57123:3;57112:9;57108:19;57099:6;57055:73;;;57139:81;57215:3;57204:9;57200:19;57191:6;57139:81;;;57231:73;57299:3;57288:9;57284:19;57275:6;57231:73;;;57315;57383:3;57372:9;57368:19;57359:6;57315:73;;;57399;57467:3;57456:9;57452:19;57443:6;57399:73;;;57483;57551:3;57540:9;57536:19;57527:6;57483:73;;;57567:74;57636:3;57625:9;57621:19;57611:7;57567:74;;;56432:1219;;;;;;;;;;;;;;;57658:581;57881:2;57866:18;;57895:102;57870:9;57970:6;57895:102;;;58008:72;58076:2;58065:9;58061:18;58052:6;58008:72;;;58128:9;58122:4;58118:20;58113:2;58102:9;58098:18;58091:48;58153:76;58224:4;58215:6;58153:76;;58246:271;58393:2;58378:18;;58407:100;58382:9;58480:6;58407:100;;58524:473;58717:2;58702:18;;58731:90;58706:9;58794:6;58731:90;;59004:491;59206:2;59191:18;;59220:99;59195:9;59292:6;59220:99;;;59330:72;59398:2;59387:9;59383:18;59374:6;59330:72;;;59413;59481:2;59470:9;59466:18;59457:6;59413:72;;59502:487;59702:2;59687:18;;59716:97;59691:9;59786:6;59716:97;;59996:503;60204:2;60189:18;;60218:105;60193:9;60296:6;60218:105;;60506:675;60748:3;60733:19;;60763:93;60737:9;60829:6;60763:93;;;60867:72;60935:2;60924:9;60920:18;60911:6;60867:72;;;60950;61018:2;61007:9;61003:18;60994:6;60950:72;;;61070:9;61064:4;61060:20;61055:2;61044:9;61040:18;61033:48;61095:76;61166:4;61157:6;61095:76;;61188:372;61358:2;61343:18;;61372:95;61347:9;61440:6;61372:95;;61567:407;61758:2;61772:47;;;61743:18;;61833:131;61743:18;61833:131;;61981:425;62181:2;62195:47;;;62166:18;;62256:140;62166:18;62382:6;62256:140;;62413:330;62589:3;62574:19;;62604:129;62578:9;62706:6;62604:129;;62750:358;62940:3;62925:19;;62955:143;62929:9;63071:6;62955:143;;63115:325;63289:2;63274:18;;63303:127;63278:9;63403:6;63303:127;;63447:468;63641:2;63655:47;;;63626:18;;63716:106;63626:18;63808:6;63716:106;;;63708:114;;63833:72;63901:2;63890:9;63886:18;63877:6;63833:72;;63922:663;64162:2;64176:47;;;64147:18;;64237:106;64147:18;64329:6;64237:106;;;64229:114;;64354:72;64422:2;64411:9;64407:18;64398:6;64354:72;;64592:516;64810:2;64824:47;;;64795:18;;64885:130;64795:18;65001:6;64885:130;;66108:256;66170:2;66164:9;66196:17;;;-1:-1;;;;;66256:34;;66292:22;;;66253:62;66250:2;;;66328:1;66325;66318:12;66250:2;66344;66337:22;66148:216;;-1:-1;66148:216;66371:304;;-1:-1;;;;;66522:6;66519:30;66516:2;;;66562:1;66559;66552:12;66516:2;-1:-1;66597:4;66585:17;;;66650:15;;66453:222;67983:317;;-1:-1;;;;;68114:6;68111:30;68108:2;;;68154:1;68151;68144:12;68108:2;-1:-1;68285:4;68221;68198:17;;;;-1:-1;;68194:33;68275:15;;68045:255;68635:156;68764:4;68755:14;;68712:79;69160:142;69268:12;;69239:63;70292:183;70415:19;;;70464:4;70455:14;;70408:67;71708:91;;71770:24;71788:5;71770:24;;71806:85;71872:13;71865:21;;71848:43;71898:72;71960:5;71943:27;71977:144;-1:-1;;;;;;72038:78;;72021:100;72128:172;72223:5;72229:66;72223:5;72229:66;;72307:168;72400:5;72406:64;72400:5;72406:64;;72637:166;72729:5;72735:63;72729:5;72735:63;;72979:178;73077:5;73083:69;73077:5;73083:69;;73164:140;73243:5;73249:50;73243:5;73249:50;;73637:121;-1:-1;;;;;73699:54;;73682:76;73844:81;73915:4;73904:16;;73887:38;73932:129;;74019:37;74050:5;74019:37;;74068:172;;74178:57;74229:5;74178:57;;74247:168;;74355:55;74404:5;74355:55;;74577:166;;74684:54;74732:5;74684:54;;74919:178;;75032:60;75086:5;75032:60;;75104:140;;75198:41;75233:5;75198:41;;75577:121;;75656:37;75687:5;75656:37;;75821:145;75902:6;75897:3;75892;75879:30;-1:-1;75958:1;75940:16;;75933:27;75872:94;75975:268;76040:1;76047:101;76061:6;76058:1;76055:13;76047:101;;;76128:11;;;76122:18;76109:11;;;76102:39;76083:2;76076:10;76047:101;;;76163:6;76160:1;76157:13;76154:2;;;-1:-1;;76228:1;76210:16;;76203:27;76024:219;76332:97;76420:2;76400:14;-1:-1;;76396:28;;76380:49;76437:124;76539:1;76532:5;76529:12;76519:2;;76545:9;76568:122;76668:1;76661:5;76658:12;76648:2;;76674:9;76816:121;76915:1;76908:5;76905:12;76895:2;;76921:9;77070:127;77175:1;77168:5;77165:12;77155:2;;77181:9;77204:108;77290:1;77283:5;77280:12;77270:2;;77296:9;77565:117;77634:24;77652:5;77634:24;;;77627:5;77624:35;77614:2;;77673:1;77670;77663:12;77689:111;77755:21;77770:5;77755:21;;77807:117;77876:24;77894:5;77876:24;;77931:115;77999:23;78016:5;77999:23;;78096:74;1997:11:15;;1992:2;1982:13;;;1972:37;2069:14;;2051:16;;;2041:43;;;;2158:2;2152:9;;962:66;2213:26;;2259:15;;;2252:33;;;;2305:15;;;2298:36;;;;2366:2;2354:15;;2347:32;2411:3;2399:16;;2392:43;2505:3;2487:22;;;1285:1263::o"}}}}, "contracts/exchange/MixinAssetProxyDispatcher.sol": {"MixinAssetProxyDispatcher": {"abi": [{"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes4", "name": "id", "type": "bytes4"}, {"indexed": false, "internalType": "address", "name": "assetProxy", "type": "address"}], "name": "AssetProxyRegistered", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "previousOwner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "OwnershipTransferred", "type": "event"}, {"constant": true, "inputs": [{"internalType": "bytes4", "name": "assetProxyId", "type": "bytes4"}], "name": "getAssetProxy", "outputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "name": "registerAssetProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "6080604052600080546001600160a01b031916331790556103e3806100256000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806360704108146100515780638da5cb5b14610094578063c585bb931461009c578063f2fde38b146100c4575b600080fd5b6100786004803603602081101561006757600080fd5b50356001600160e01b0319166100ea565b604080516001600160a01b039092168252519081900360200190f35b61007861010f565b6100c2600480360360208110156100b257600080fd5b50356001600160a01b031661011e565b005b6100c2600480360360208110156100da57600080fd5b50356001600160a01b031661023e565b6001600160e01b0319166000908152600160205260409020546001600160a01b031690565b6000546001600160a01b031681565b6101266102b0565b6000816001600160a01b031663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561016157600080fd5b505afa158015610175573d6000803e3d6000fd5b505050506040513d602081101561018b57600080fd5b50516001600160e01b031981166000908152600160205260409020549091506001600160a01b031680156101cb576101cb6101c683836102df565b610337565b6001600160e01b0319821660008181526001602090815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519384529083015280517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c031949281900390910190a1505050565b6102466102b0565b6001600160a01b0381166102645761025f6101c661033f565b6102ad565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b6000546001600160a01b031633146102dd576000546102dd906101c69033906001600160a01b031661035d565b565b604080516001600160e01b0319841660248201526001600160a01b0383166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316628e3db960e51b17905292915050565b805160208201fd5b604080518082019091526004815263734f6e1f60e11b602082015290565b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316631de45ad160e01b1790529291505056fea265627a7a723158201399b0fb6bb4fea3ba41a5423f2948e0d158361cd66e8cf9ad1b988cf02f7aa564736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x3E3 DUP1 PUSH2 0x25 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x60704108 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x94 JUMPI DUP1 PUSH4 0xC585BB93 EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xEA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x78 PUSH2 0x10F JUMP JUMPDEST PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11E JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x23E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x126 PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE25532E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x175 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1CB JUMPI PUSH2 0x1CB PUSH2 0x1C6 DUP4 DUP4 PUSH2 0x2DF JUMP JUMPDEST PUSH2 0x337 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD2C6B762299C609BDB96520B58A49BFB80186934D4F71A86A367571A15C03194 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x246 PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x264 JUMPI PUSH2 0x25F PUSH2 0x1C6 PUSH2 0x33F JUMP JUMPDEST PUSH2 0x2AD JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2DD JUMPI PUSH1 0x0 SLOAD PUSH2 0x2DD SWAP1 PUSH2 0x1C6 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x35D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x8E3DB9 PUSH1 0xE5 SHL OR SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SGT SWAP10 0xB0 0xFB PUSH12 0xB4FEA3BA41A5423F2948E0D1 PC CALLDATASIZE SHR 0xD6 PUSH15 0x8CF9AD1B988CF02F7AA564736F6C63 NUMBER STOP SDIV LT STOP ORIGIN ", "sourceMap": "948:3945:26:-;;;898:5:21;:18;;-1:-1:-1;;;;;;898:18:21;906:10;898:18;;;948:3945:26;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c806360704108146100515780638da5cb5b14610094578063c585bb931461009c578063f2fde38b146100c4575b600080fd5b6100786004803603602081101561006757600080fd5b50356001600160e01b0319166100ea565b604080516001600160a01b039092168252519081900360200190f35b61007861010f565b6100c2600480360360208110156100b257600080fd5b50356001600160a01b031661011e565b005b6100c2600480360360208110156100da57600080fd5b50356001600160a01b031661023e565b6001600160e01b0319166000908152600160205260409020546001600160a01b031690565b6000546001600160a01b031681565b6101266102b0565b6000816001600160a01b031663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561016157600080fd5b505afa158015610175573d6000803e3d6000fd5b505050506040513d602081101561018b57600080fd5b50516001600160e01b031981166000908152600160205260409020549091506001600160a01b031680156101cb576101cb6101c683836102df565b610337565b6001600160e01b0319821660008181526001602090815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519384529083015280517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c031949281900390910190a1505050565b6102466102b0565b6001600160a01b0381166102645761025f6101c661033f565b6102ad565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b6000546001600160a01b031633146102dd576000546102dd906101c69033906001600160a01b031661035d565b565b604080516001600160e01b0319841660248201526001600160a01b0383166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316628e3db960e51b17905292915050565b805160208201fd5b604080518082019091526004815263734f6e1f60e11b602082015290565b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316631de45ad160e01b1790529291505056fea265627a7a723158201399b0fb6bb4fea3ba41a5423f2948e0d158361cd66e8cf9ad1b988cf02f7aa564736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x60704108 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x94 JUMPI DUP1 PUSH4 0xC585BB93 EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xEA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x78 PUSH2 0x10F JUMP JUMPDEST PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11E JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x23E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x126 PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE25532E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x175 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1CB JUMPI PUSH2 0x1CB PUSH2 0x1C6 DUP4 DUP4 PUSH2 0x2DF JUMP JUMPDEST PUSH2 0x337 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD2C6B762299C609BDB96520B58A49BFB80186934D4F71A86A367571A15C03194 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x246 PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x264 JUMPI PUSH2 0x25F PUSH2 0x1C6 PUSH2 0x33F JUMP JUMPDEST PUSH2 0x2AD JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2DD JUMPI PUSH1 0x0 SLOAD PUSH2 0x2DD SWAP1 PUSH2 0x1C6 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x35D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x8E3DB9 PUSH1 0xE5 SHL OR SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SGT SWAP10 0xB0 0xFB PUSH12 0xB4FEA3BA41A5423F2948E0D1 PC CALLDATASIZE SHR 0xD6 PUSH15 0x8CF9AD1B988CF02F7AA564736F6C63 NUMBER STOP SDIV LT STOP ORIGIN ", "sourceMap": "948:3945:26:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;948:3945:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:166;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2299:166:26;-1:-1:-1;;;;;;2299:166:26;;:::i;:::-;;;;-1:-1:-1;;;;;2299:166:26;;;;;;;;;;;;;;827:20:21;;;:::i;1390:700:26:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1390:700:26;-1:-1:-1;;;;;1390:700:26;;:::i;:::-;;1097:329:21;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1097:329:21;-1:-1:-1;;;;;1097:329:21;;:::i;2299:166:26:-;-1:-1:-1;;;;;;2431:27:26;2390:18;2431:27;;;:13;:27;;;;;;-1:-1:-1;;;;;2431:27:26;;2299:166::o;827:20:21:-;;;-1:-1:-1;;;;;827:20:21;;:::o;1390:700:26:-;960:22:21;:20;:22::i;:::-;1549:19:26;1583:10;-1:-1:-1;;;;;1571:34:26;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1571:36:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1571:36:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1571:36:26;-1:-1:-1;;;;;;1645:27:26;;1617:25;1645:27;;;:13;1571:36;1645:27;;;;;1571:36;;-1:-1:-1;;;;;;1645:27:26;1686:31;;1682:207;;1733:145;1755:122;1816:12;1846:17;1755:43;:122::i;:::-;1733:21;:145::i;:::-;-1:-1:-1;;;;;;1948:27:26;;;;;;:13;:27;;;;;;;;;:40;;-1:-1:-1;;;;;;1948:40:26;-1:-1:-1;;;;;1948:40:26;;;;;;;;2003:80;;;;;;;;;;;;;;;;;;;;;992:1:21;;1390:700:26;:::o;1097:329:21:-;960:22;:20;:22::i;:::-;-1:-1:-1;;;;;1193:22:21;;1189:231;;1231:70;1253:47;:45;:47::i;1231:70::-;1189:231;;;1332:5;:16;;-1:-1:-1;;;;;;1332:16:21;-1:-1:-1;;;;;1332:16:21;;;;;;;1367:42;;1332:16;;1388:10;;1367:42;;1332:5;1367:42;1189:231;1097:329;:::o;1432:255::-;1526:5;;-1:-1:-1;;;;;1526:5:21;1512:10;:19;1508:173;;1650:5;;1547:123;;1569:100;;1622:10;;-1:-1:-1;;;;;1650:5:21;1569:35;:100::i;1547:123::-;1432:255::o;11110:326:3:-;11293:136;;;-1:-1:-1;;;;;;11293:136:3;;;;;;-1:-1:-1;;;;;11293:136:3;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11293:136:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;11110:326:3;;;;:::o;1511:170:18:-;1654:9;1648:16;1641:4;1630:9;1626:20;1619:46;669:159:16;787:34;;;;;;;;;;;;-1:-1:-1;;;787:34:16;;;;669:159;:::o;387:276::-;546:110;;;-1:-1:-1;;;;;546:110:16;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;546:110:16;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;387:276:16;;;;:::o"}}}}, "contracts/exchange/MixinExchangeCore.sol": {"MixinExchangeCore": {"abi": [{"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes4", "name": "id", "type": "bytes4"}, {"indexed": false, "internalType": "address", "name": "assetProxy", "type": "address"}], "name": "AssetProxyRegistered", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}], "name": "Cancel", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "orderSenderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "orderEpoch", "type": "uint256"}], "name": "CancelUpTo", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"indexed": false, "internalType": "address", "name": "takerAddress", "type": "address"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "name": "Fill", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "previousOwner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "OwnershipTransferred", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "oldProtocolFeeCollector", "type": "address"}, {"indexed": false, "internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "ProtocolFeeCollectorAddress", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "uint256", "name": "oldProtocolFeeMultiplier", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "ProtocolFeeMultiplier", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "signerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "validatorAddress", "type": "address"}, {"indexed": false, "internalType": "bool", "name": "isApproved", "type": "bool"}], "name": "SignatureValidatorApproval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "bytes32", "name": "transactionHash", "type": "bytes32"}], "name": "TransactionExecution", "type": "event"}, {"constant": true, "inputs": [], "name": "EIP1271_MAGIC_VALUE", "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "EIP712_EXCHANGE_DOMAIN_HASH", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "allowedValidators", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction[]", "name": "transactions", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchExecuteTransactions", "outputs": [{"internalType": "bytes[]", "name": "returnData", "type": "bytes[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "cancelOrder", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "targetOrderEpoch", "type": "uint256"}], "name": "cancelOrdersUpTo", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "cancelled", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "currentContextAddress", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "detachProtocolFeeCollector", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "executeTransaction", "outputs": [{"internalType": "bytes", "name": "", "type": "bytes"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "fillOrder", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "filled", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes4", "name": "assetProxyId", "type": "bytes4"}], "name": "getAssetProxy", "outputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "getOrderInfo", "outputs": [{"components": [{"internalType": "enum LibOrder.OrderStatus", "name": "orderStatus", "type": "uint8"}, {"internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256"}], "internalType": "struct LibOrder.OrderInfo", "name": "orderInfo", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidHashSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidOrderSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidTransactionSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "orderEpoch", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}], "name": "preSign", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "address", "name": "", "type": "address"}], "name": "preSigned", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeCollector", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeMultiplier", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "name": "registerAssetProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "setProtocolFeeCollectorAddress", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "setProtocolFeeMultiplier", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "validatorAddress", "type": "address"}, {"internalType": "bool", "name": "approval", "type": "bool"}], "name": "setSignatureValidatorApproval", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "transactionsExecuted", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/MixinMatchOrders.sol": {"MixinMatchOrders": {"abi": [{"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes4", "name": "id", "type": "bytes4"}, {"indexed": false, "internalType": "address", "name": "assetProxy", "type": "address"}], "name": "AssetProxyRegistered", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}], "name": "Cancel", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "orderSenderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "orderEpoch", "type": "uint256"}], "name": "CancelUpTo", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"indexed": false, "internalType": "address", "name": "takerAddress", "type": "address"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "name": "Fill", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "previousOwner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "OwnershipTransferred", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "oldProtocolFeeCollector", "type": "address"}, {"indexed": false, "internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "ProtocolFeeCollectorAddress", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "uint256", "name": "oldProtocolFeeMultiplier", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "ProtocolFeeMultiplier", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "signerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "validatorAddress", "type": "address"}, {"indexed": false, "internalType": "bool", "name": "isApproved", "type": "bool"}], "name": "SignatureValidatorApproval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "bytes32", "name": "transactionHash", "type": "bytes32"}], "name": "TransactionExecution", "type": "event"}, {"constant": true, "inputs": [], "name": "EIP1271_MAGIC_VALUE", "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "EIP712_EXCHANGE_DOMAIN_HASH", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "allowedValidators", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction[]", "name": "transactions", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchExecuteTransactions", "outputs": [{"internalType": "bytes[]", "name": "returnData", "type": "bytes[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "leftOrders", "type": "tuple[]"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "rightOrders", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "leftSignatures", "type": "bytes[]"}, {"internalType": "bytes[]", "name": "rightSignatures", "type": "bytes[]"}], "name": "batchMatchOrders", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "left", "type": "tuple[]"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "right", "type": "tuple[]"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.BatchMatchedFillResults", "name": "batchMatchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "leftOrders", "type": "tuple[]"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "rightOrders", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "leftSignatures", "type": "bytes[]"}, {"internalType": "bytes[]", "name": "rightSignatures", "type": "bytes[]"}], "name": "batchMatchOrdersWithMaximalFill", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "left", "type": "tuple[]"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "right", "type": "tuple[]"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.BatchMatchedFillResults", "name": "batchMatchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "cancelOrder", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "targetOrderEpoch", "type": "uint256"}], "name": "cancelOrdersUpTo", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "cancelled", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "currentContextAddress", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "detachProtocolFeeCollector", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "executeTransaction", "outputs": [{"internalType": "bytes", "name": "", "type": "bytes"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "fillOrder", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "filled", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes4", "name": "assetProxyId", "type": "bytes4"}], "name": "getAssetProxy", "outputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "getOrderInfo", "outputs": [{"components": [{"internalType": "enum LibOrder.OrderStatus", "name": "orderStatus", "type": "uint8"}, {"internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256"}], "internalType": "struct LibOrder.OrderInfo", "name": "orderInfo", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidHashSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidOrderSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidTransactionSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "leftOrder", "type": "tuple"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "rightOrder", "type": "tuple"}, {"internalType": "bytes", "name": "leftSignature", "type": "bytes"}, {"internalType": "bytes", "name": "rightSignature", "type": "bytes"}], "name": "matchOrders", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "left", "type": "tuple"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "right", "type": "tuple"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.MatchedFillResults", "name": "matchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "leftOrder", "type": "tuple"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "rightOrder", "type": "tuple"}, {"internalType": "bytes", "name": "leftSignature", "type": "bytes"}, {"internalType": "bytes", "name": "rightSignature", "type": "bytes"}], "name": "matchOrdersWithMaximalFill", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "left", "type": "tuple"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "right", "type": "tuple"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.MatchedFillResults", "name": "matchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "orderEpoch", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}], "name": "preSign", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "address", "name": "", "type": "address"}], "name": "preSigned", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeCollector", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeMultiplier", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "name": "registerAssetProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "setProtocolFeeCollectorAddress", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "setProtocolFeeMultiplier", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "validatorAddress", "type": "address"}, {"internalType": "bool", "name": "approval", "type": "bool"}], "name": "setSignatureValidatorApproval", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "transactionsExecuted", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/MixinProtocolFees.sol": {"MixinProtocolFees": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "previousOwner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "OwnershipTransferred", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "oldProtocolFeeCollector", "type": "address"}, {"indexed": false, "internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "ProtocolFeeCollectorAddress", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "uint256", "name": "oldProtocolFeeMultiplier", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "ProtocolFeeMultiplier", "type": "event"}, {"constant": false, "inputs": [], "name": "detachProtocolFeeCollector", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeCollector", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeMultiplier", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "setProtocolFeeCollectorAddress", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "setProtocolFeeMultiplier", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "6080604052600080546001600160a01b0319163317905561038a806100256000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ca5780639331c742146100d2578063c0fa16cc146100ef578063f2fde38b146101155761007d565b80630efca185146100825780631ce4c78b1461008c578063850a1501146100a6575b600080fd5b61008a61013b565b005b61009461014f565b60408051918252519081900360200190f35b6100ae610155565b604080516001600160a01b039092168252519081900360200190f35b6100ae610164565b61008a600480360360208110156100e857600080fd5b5035610173565b61008a6004803603602081101561010557600080fd5b50356001600160a01b03166101bd565b61008a6004803603602081101561012b57600080fd5b50356001600160a01b03166101d1565b610143610247565b61014d6000610274565b565b60015481565b6002546001600160a01b031681565b6000546001600160a01b031681565b61017b610247565b600154604080519182526020820183905280517f3a3e76d7a75e198aef1f53137e4f2a8a2ec74e2e9526db8404d08ccc9f1e621d9281900390910190a1600155565b6101c5610247565b6101ce81610274565b50565b6101d9610247565b6001600160a01b0381166101fc576101f76101f26102de565b6102fc565b6101ce565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b0316331461014d5760005461014d906101f29033906001600160a01b0316610304565b600254604080516001600160a01b039283168152918316602083015280517fe1a5430ebec577336427f40f15822f1f36c5e3509ff209d6db9e6c9e6941cb0b9281900390910190a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526004815263734f6e1f60e11b602082015290565b805160208201fd5b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316631de45ad160e01b1790529291505056fea265627a7a723158207ad9bf462a592c0cc1d3b190d8a17a3c58fdbdf68bfef102ecfc22622986406564736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x38A DUP1 PUSH2 0x25 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x9331C742 EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xC0FA16CC EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x115 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0xEFCA185 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x1CE4C78B EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x850A1501 EQ PUSH2 0xA6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x13B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x94 PUSH2 0x14F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAE PUSH2 0x155 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAE PUSH2 0x164 JUMP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x173 JUMP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BD JUMP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x247 JUMP JUMPDEST PUSH2 0x14D PUSH1 0x0 PUSH2 0x274 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x17B PUSH2 0x247 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP4 SWAP1 MSTORE DUP1 MLOAD PUSH32 0x3A3E76D7A75E198AEF1F53137E4F2A8A2EC74E2E9526DB8404D08CCC9F1E621D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH2 0x1C5 PUSH2 0x247 JUMP JUMPDEST PUSH2 0x1CE DUP2 PUSH2 0x274 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x247 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1FC JUMPI PUSH2 0x1F7 PUSH2 0x1F2 PUSH2 0x2DE JUMP JUMPDEST PUSH2 0x2FC JUMP JUMPDEST PUSH2 0x1CE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14D JUMPI PUSH1 0x0 SLOAD PUSH2 0x14D SWAP1 PUSH2 0x1F2 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x304 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xE1A5430EBEC577336427F40F15822F1F36C5E3509FF209D6DB9E6C9E6941CB0B SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH27 0xD9BF462A592C0CC1D3B190D8A17A3C58FDBDF68BFEF102ECFC2262 0x29 DUP7 BLOCKHASH PUSH6 0x64736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "914:6343:29:-;;;898:5:21;:18;;-1:-1:-1;;;;;;898:18:21;906:10;898:18;;;914:6343:29;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ca5780639331c742146100d2578063c0fa16cc146100ef578063f2fde38b146101155761007d565b80630efca185146100825780631ce4c78b1461008c578063850a1501146100a6575b600080fd5b61008a61013b565b005b61009461014f565b60408051918252519081900360200190f35b6100ae610155565b604080516001600160a01b039092168252519081900360200190f35b6100ae610164565b61008a600480360360208110156100e857600080fd5b5035610173565b61008a6004803603602081101561010557600080fd5b50356001600160a01b03166101bd565b61008a6004803603602081101561012b57600080fd5b50356001600160a01b03166101d1565b610143610247565b61014d6000610274565b565b60015481565b6002546001600160a01b031681565b6000546001600160a01b031681565b61017b610247565b600154604080519182526020820183905280517f3a3e76d7a75e198aef1f53137e4f2a8a2ec74e2e9526db8404d08ccc9f1e621d9281900390910190a1600155565b6101c5610247565b6101ce81610274565b50565b6101d9610247565b6001600160a01b0381166101fc576101f76101f26102de565b6102fc565b6101ce565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b0316331461014d5760005461014d906101f29033906001600160a01b0316610304565b600254604080516001600160a01b039283168152918316602083015280517fe1a5430ebec577336427f40f15822f1f36c5e3509ff209d6db9e6c9e6941cb0b9281900390910190a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526004815263734f6e1f60e11b602082015290565b805160208201fd5b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316631de45ad160e01b1790529291505056fea265627a7a723158207ad9bf462a592c0cc1d3b190d8a17a3c58fdbdf68bfef102ecfc22622986406564736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x9331C742 EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xC0FA16CC EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x115 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0xEFCA185 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x1CE4C78B EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x850A1501 EQ PUSH2 0xA6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x13B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x94 PUSH2 0x14F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAE PUSH2 0x155 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAE PUSH2 0x164 JUMP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x173 JUMP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BD JUMP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x247 JUMP JUMPDEST PUSH2 0x14D PUSH1 0x0 PUSH2 0x274 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x17B PUSH2 0x247 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP4 SWAP1 MSTORE DUP1 MLOAD PUSH32 0x3A3E76D7A75E198AEF1F53137E4F2A8A2EC74E2E9526DB8404D08CCC9F1E621D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH2 0x1C5 PUSH2 0x247 JUMP JUMPDEST PUSH2 0x1CE DUP2 PUSH2 0x274 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x247 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1FC JUMPI PUSH2 0x1F7 PUSH2 0x1F2 PUSH2 0x2DE JUMP JUMPDEST PUSH2 0x2FC JUMP JUMPDEST PUSH2 0x1CE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14D JUMPI PUSH1 0x0 SLOAD PUSH2 0x14D SWAP1 PUSH2 0x1F2 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x304 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xE1A5430EBEC577336427F40F15822F1F36C5E3509FF209D6DB9E6C9E6941CB0B SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH27 0xD9BF462A592C0CC1D3B190D8A17A3C58FDBDF68BFEF102ECFC2262 0x29 DUP7 BLOCKHASH PUSH6 0x64736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "914:6343:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;914:6343:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2236:137;;;:::i;:::-;;1091:36;;;:::i;:::-;;;;;;;;;;;;;;;;1299:35;;;:::i;:::-;;;;-1:-1:-1;;;;;1299:35:29;;;;;;;;;;;;;;827:20:21;;;:::i;1491:269:29:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1491:269:29;;:::i;1934:193::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1934:193:29;-1:-1:-1;;;;;1934:193:29;;:::i;1097:329:21:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1097:329:21;-1:-1:-1;;;;;1097:329:21;;:::i;2236:137:29:-;960:22:21;:20;:22::i;:::-;2323:43:29;2363:1;2323:31;:43::i;:::-;2236:137::o;1091:36::-;;;;:::o;1299:35::-;;;-1:-1:-1;;;;;1299:35:29;;:::o;827:20:21:-;;;-1:-1:-1;;;;;827:20:21;;:::o;1491:269:29:-;960:22:21;:20;:22::i;:::-;1639:21:29;;1617:74;;;;;;;;;;;;;;;;;;;;;;;;1701:21;:52;1491:269::o;1934:193::-;960:22:21;:20;:22::i;:::-;2060:60:29;2092:27;2060:31;:60::i;:::-;1934:193;:::o;1097:329:21:-;960:22;:20;:22::i;:::-;-1:-1:-1;;;;;1193:22:21;;1189:231;;1231:70;1253:47;:45;:47::i;:::-;1231:21;:70::i;:::-;1189:231;;;1332:5;:16;;-1:-1:-1;;;;;;1332:16:21;-1:-1:-1;;;;;1332:16:21;;;;;;;1367:42;;1332:16;;1388:10;;1367:42;;1332:5;1367:42;1097:329;:::o;1432:255::-;1526:5;;-1:-1:-1;;;;;1526:5:21;1512:10;:19;1508:173;;1650:5;;1547:123;;1569:100;;1622:10;;-1:-1:-1;;;;;1650:5:21;1569:35;:100::i;2544:259:29:-;2686:20;;2658:78;;;-1:-1:-1;;;;;2686:20:29;;;2658:78;;;;;;;;;;;;;;;;;;;;;2746:20;:50;;-1:-1:-1;;;;;;2746:50:29;-1:-1:-1;;;;;2746:50:29;;;;;;;;;;2544:259::o;669:159:16:-;787:34;;;;;;;;;;;;-1:-1:-1;;;787:34:16;;;;669:159;:::o;1511:170:18:-;1654:9;1648:16;1641:4;1630:9;1626:20;1619:46;387:276:16;546:110;;;-1:-1:-1;;;;;546:110:16;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;546:110:16;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;387:276:16;;;;:::o"}}}}, "contracts/exchange/MixinSignatureValidator.sol": {"MixinSignatureValidator": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "signerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "validatorAddress", "type": "address"}, {"indexed": false, "internalType": "bool", "name": "isApproved", "type": "bool"}], "name": "SignatureValidatorApproval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "bytes32", "name": "transactionHash", "type": "bytes32"}], "name": "TransactionExecution", "type": "event"}, {"constant": true, "inputs": [], "name": "EIP1271_MAGIC_VALUE", "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "EIP712_EXCHANGE_DOMAIN_HASH", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "allowedValidators", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction[]", "name": "transactions", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchExecuteTransactions", "outputs": [{"internalType": "bytes[]", "name": "returnData", "type": "bytes[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [], "name": "currentContextAddress", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "executeTransaction", "outputs": [{"internalType": "bytes", "name": "", "type": "bytes"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidHashSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidOrderSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidTransactionSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}], "name": "preSign", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "address", "name": "", "type": "address"}], "name": "preSigned", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "validatorAddress", "type": "address"}, {"internalType": "bool", "name": "approval", "type": "bool"}], "name": "setSignatureValidatorApproval", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "transactionsExecuted", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/MixinTransactions.sol": {"MixinTransactions": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "signerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "validatorAddress", "type": "address"}, {"indexed": false, "internalType": "bool", "name": "isApproved", "type": "bool"}], "name": "SignatureValidatorApproval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "bytes32", "name": "transactionHash", "type": "bytes32"}], "name": "TransactionExecution", "type": "event"}, {"constant": true, "inputs": [], "name": "EIP712_EXCHANGE_DOMAIN_HASH", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction[]", "name": "transactions", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchExecuteTransactions", "outputs": [{"internalType": "bytes[]", "name": "returnData", "type": "bytes[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [], "name": "currentContextAddress", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "executeTransaction", "outputs": [{"internalType": "bytes", "name": "", "type": "bytes"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidHashSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidOrderSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidTransactionSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}], "name": "preSign", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "validatorAddress", "type": "address"}, {"internalType": "bool", "name": "approval", "type": "bool"}], "name": "setSignatureValidatorApproval", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "transactionsExecuted", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/MixinTransferSimulator.sol": {"MixinTransferSimulator": {"abi": [{"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes4", "name": "id", "type": "bytes4"}, {"indexed": false, "internalType": "address", "name": "assetProxy", "type": "address"}], "name": "AssetProxyRegistered", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "previousOwner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "OwnershipTransferred", "type": "event"}, {"constant": true, "inputs": [{"internalType": "bytes4", "name": "assetProxyId", "type": "bytes4"}], "name": "getAssetProxy", "outputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "name": "registerAssetProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes[]", "name": "assetData", "type": "bytes[]"}, {"internalType": "address[]", "name": "fromAddresses", "type": "address[]"}, {"internalType": "address[]", "name": "toAddresses", "type": "address[]"}, {"internalType": "uint256[]", "name": "amounts", "type": "uint256[]"}], "name": "simulateDispatchTransferFromCalls", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "6080604052600080546001600160a01b03191633179055610c77806100256000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063607041081461005c5780638da5cb5b14610085578063b04fbddd1461008d578063c585bb93146100a2578063f2fde38b146100b5575b600080fd5b61006f61006a3660046108c1565b6100c8565b60405161007c91906109d3565b60405180910390f35b61006f6100f1565b6100a061009b366004610801565b610100565b005b6100a06100b03660046107db565b610192565b6100a06100c33660046107db565b6102bc565b6001600160e01b031981166000908152600160205260409020546001600160a01b03165b919050565b6000546001600160a01b031681565b835160005b818114610170576101688160001b87838151811061011f57fe5b602002602001015187848151811061013357fe5b602002602001015187858151811061014757fe5b602002602001015187868151811061015b57fe5b602002602001015161032e565b600101610105565b5060405162461bcd60e51b815260040161018990610ad6565b60405180910390fd5b61019a61047d565b6000816001600160a01b031663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101d557600080fd5b505afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061020d91908101906108df565b6001600160e01b031981166000908152600160205260409020549091506001600160a01b0316801561024b5761024b61024683836104ac565b610504565b6001600160e01b031982166000908152600160205260409081902080546001600160a01b0319166001600160a01b038616179055517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c03194906102af9084908690610a39565b60405180910390a1505050565b6102c461047d565b6001600160a01b0381166102e2576102dd61024661050c565b61032b565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b801561047657602084518161033f57fe5b06600414610356576103566102466000878761052a565b6000610368858263ffffffff61058516565b6001600160e01b031981166000908152600160205260409020549091506001600160a01b0316806103a2576103a26102466001898961052a565b604051606090632a17967960e21b906103c5908990899089908990602401610a47565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b03168360405161041691906109c7565b6000604051808303816000865af19150503d8060008114610453576040519150601f19603f3d011682016040523d82523d6000602084013e610458565b606091505b509150915081610470576104706102468b8b846105b9565b50505050505b5050505050565b6000546001600160a01b031633146104aa576000546104aa906102469033906001600160a01b03166105d8565b565b60606311c7b72060e01b83836040516024016104c9929190610a39565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b92915050565b805160208201fd5b604080518082019091526004815263734f6e1f60e11b602082015290565b606063488219a660e01b84848460405160240161054993929190610a81565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b9392505050565b600081600401835110156105a6576105a661024660038551856004016105f5565b5001602001516001600160e01b03191690565b6060634678472b60e01b848484604051602401610549939291906109fc565b6060631de45ad160e01b83836040516024016104c99291906109e1565b6060632800659560e01b84848460405160240161054993929190610aae565b80356104fe81610c0e565b600082601f83011261063057600080fd5b813561064361063e82610b0d565b610ae6565b9150818183526020840193506020810190508385602084028201111561066857600080fd5b60005b83811015610694578161067e8882610614565b845250602092830192919091019060010161066b565b5050505092915050565b600082601f8301126106af57600080fd5b81356106bd61063e82610b0d565b81815260209384019390925082018360005b8381101561069457813586016106e58882610781565b84525060209283019291909101906001016106cf565b600082601f83011261070c57600080fd5b813561071a61063e82610b0d565b9150818183526020840193506020810190508385602084028201111561073f57600080fd5b60005b83811015610694578161075588826107d0565b8452506020928301929190910190600101610742565b80356104fe81610c22565b80516104fe81610c22565b600082601f83011261079257600080fd5b81356107a061063e82610b2e565b915080825260208301602083018583830111156107bc57600080fd5b6107c7838284610bb4565b50505092915050565b80356104fe81610c2b565b6000602082840312156107ed57600080fd5b60006107f98484610614565b949350505050565b6000806000806080858703121561081757600080fd5b843567ffffffffffffffff81111561082e57600080fd5b61083a8782880161069e565b945050602085013567ffffffffffffffff81111561085757600080fd5b6108638782880161061f565b935050604085013567ffffffffffffffff81111561088057600080fd5b61088c8782880161061f565b925050606085013567ffffffffffffffff8111156108a957600080fd5b6108b5878288016106fb565b91505092959194509250565b6000602082840312156108d357600080fd5b60006107f9848461076b565b6000602082840312156108f157600080fd5b60006107f98484610776565b61090681610b63565b82525050565b61090681610b6e565b61090681610b71565b600061092982610b56565b6109338185610b5a565b9350610943818560208601610bc0565b61094c81610bf0565b9093019392505050565b600061096182610b56565b61096b81856100ec565b935061097b818560208601610bc0565b9290920192915050565b61090681610b9e565b61090681610ba9565b60006109a4601483610b5a565b731514905394d1915494d7d4d550d0d154d4d1955360621b815260200192915050565b600061057e8284610956565b602081016104fe82846108fd565b604081016109ef82856108fd565b61057e60208301846108fd565b60608101610a0a828661090c565b8181036020830152610a1c818561091e565b90508181036040830152610a30818461091e565b95945050505050565b604081016109ef8285610915565b60808082528101610a58818761091e565b9050610a6760208301866108fd565b610a7460408301856108fd565b610a30606083018461090c565b60608101610a8f8286610985565b610a9c602083018561090c565b8181036040830152610a30818461091e565b60608101610abc828661098e565b610ac9602083018561090c565b6107f9604083018461090c565b602080825281016104fe81610997565b60405181810167ffffffffffffffff81118282101715610b0557600080fd5b604052919050565b600067ffffffffffffffff821115610b2457600080fd5b5060209081020190565b600067ffffffffffffffff821115610b4557600080fd5b506020601f91909101601f19160190565b5190565b90815260200190565b60006104fe82610b92565b90565b6001600160e01b03191690565b806100ec81610bfa565b806100ec81610c04565b6001600160a01b031690565b60006104fe82610b7e565b60006104fe82610b88565b82818337506000910152565b60005b83811015610bdb578181015183820152602001610bc3565b83811115610bea576000848401525b50505050565b601f01601f191690565b6002811061032b57fe5b6008811061032b57fe5b610c1781610b63565b811461032b57600080fd5b610c1781610b71565b610c1781610b6e56fea365627a7a723158203ceb53aa382d48a86170af120c38490f919a8334c28b0c3d55a44a2ed868d6c96c6578706572696d656e74616cf564736f6c63430005100040", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0xC77 DUP1 PUSH2 0x25 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x60704108 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x85 JUMPI DUP1 PUSH4 0xB04FBDDD EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xC585BB93 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x8C1 JUMP JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x9D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0xF1 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x801 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA0 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x170 JUMPI PUSH2 0x168 DUP2 PUSH1 0x0 SHL DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x11F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x133 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x147 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x15B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x32E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x105 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x189 SWAP1 PUSH2 0xAD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0x47D JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE25532E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x20D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x8DF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x24B JUMPI PUSH2 0x24B PUSH2 0x246 DUP4 DUP4 PUSH2 0x4AC JUMP JUMPDEST PUSH2 0x504 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE MLOAD PUSH32 0xD2C6B762299C609BDB96520B58A49BFB80186934D4F71A86A367571A15C03194 SWAP1 PUSH2 0x2AF SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0xA39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x2C4 PUSH2 0x47D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2E2 JUMPI PUSH2 0x2DD PUSH2 0x246 PUSH2 0x50C JUMP JUMPDEST PUSH2 0x32B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x476 JUMPI PUSH1 0x20 DUP5 MLOAD DUP2 PUSH2 0x33F JUMPI INVALID JUMPDEST MOD PUSH1 0x4 EQ PUSH2 0x356 JUMPI PUSH2 0x356 PUSH2 0x246 PUSH1 0x0 DUP8 DUP8 PUSH2 0x52A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x368 DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x585 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x3A2 JUMPI PUSH2 0x3A2 PUSH2 0x246 PUSH1 0x1 DUP10 DUP10 PUSH2 0x52A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x2A179679 PUSH1 0xE2 SHL SWAP1 PUSH2 0x3C5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x24 ADD PUSH2 0xA47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x416 SWAP2 SWAP1 PUSH2 0x9C7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x453 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x458 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x470 JUMPI PUSH2 0x470 PUSH2 0x246 DUP12 DUP12 DUP5 PUSH2 0x5B9 JUMP JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x4AA JUMPI PUSH1 0x0 SLOAD PUSH2 0x4AA SWAP1 PUSH2 0x246 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5D8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH4 0x11C7B720 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4C9 SWAP3 SWAP2 SWAP1 PUSH2 0xA39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x488219A6 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x549 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA81 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 ADD DUP4 MLOAD LT ISZERO PUSH2 0x5A6 JUMPI PUSH2 0x5A6 PUSH2 0x246 PUSH1 0x3 DUP6 MLOAD DUP6 PUSH1 0x4 ADD PUSH2 0x5F5 JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x4678472B PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x549 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x60 PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4C9 SWAP3 SWAP2 SWAP1 PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x28006595 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x549 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xAAE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4FE DUP2 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x630 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x643 PUSH2 0x63E DUP3 PUSH2 0xB0D JUMP JUMPDEST PUSH2 0xAE6 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x694 JUMPI DUP2 PUSH2 0x67E DUP9 DUP3 PUSH2 0x614 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x66B JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6BD PUSH2 0x63E DUP3 PUSH2 0xB0D JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x694 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x6E5 DUP9 DUP3 PUSH2 0x781 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x6CF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x71A PUSH2 0x63E DUP3 PUSH2 0xB0D JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x694 JUMPI DUP2 PUSH2 0x755 DUP9 DUP3 PUSH2 0x7D0 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x742 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4FE DUP2 PUSH2 0xC22 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x4FE DUP2 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7A0 PUSH2 0x63E DUP3 PUSH2 0xB2E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x7BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7C7 DUP4 DUP3 DUP5 PUSH2 0xBB4 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4FE DUP2 PUSH2 0xC2B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP5 DUP5 PUSH2 0x614 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x83A DUP8 DUP3 DUP9 ADD PUSH2 0x69E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x863 DUP8 DUP3 DUP9 ADD PUSH2 0x61F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x880 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88C DUP8 DUP3 DUP9 ADD PUSH2 0x61F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8B5 DUP8 DUP3 DUP9 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP5 DUP5 PUSH2 0x76B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP5 DUP5 PUSH2 0x776 JUMP JUMPDEST PUSH2 0x906 DUP2 PUSH2 0xB63 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x906 DUP2 PUSH2 0xB6E JUMP JUMPDEST PUSH2 0x906 DUP2 PUSH2 0xB71 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x929 DUP3 PUSH2 0xB56 JUMP JUMPDEST PUSH2 0x933 DUP2 DUP6 PUSH2 0xB5A JUMP JUMPDEST SWAP4 POP PUSH2 0x943 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBC0 JUMP JUMPDEST PUSH2 0x94C DUP2 PUSH2 0xBF0 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x961 DUP3 PUSH2 0xB56 JUMP JUMPDEST PUSH2 0x96B DUP2 DUP6 PUSH2 0xEC JUMP JUMPDEST SWAP4 POP PUSH2 0x97B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBC0 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x906 DUP2 PUSH2 0xB9E JUMP JUMPDEST PUSH2 0x906 DUP2 PUSH2 0xBA9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A4 PUSH1 0x14 DUP4 PUSH2 0xB5A JUMP JUMPDEST PUSH20 0x1514905394D1915494D7D4D550D0D154D4D19553 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57E DUP3 DUP5 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4FE DUP3 DUP5 PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x9EF DUP3 DUP6 PUSH2 0x8FD JUMP JUMPDEST PUSH2 0x57E PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xA0A DUP3 DUP7 PUSH2 0x90C JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xA1C DUP2 DUP6 PUSH2 0x91E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xA30 DUP2 DUP5 PUSH2 0x91E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x9EF DUP3 DUP6 PUSH2 0x915 JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA58 DUP2 DUP8 PUSH2 0x91E JUMP JUMPDEST SWAP1 POP PUSH2 0xA67 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x8FD JUMP JUMPDEST PUSH2 0xA74 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x8FD JUMP JUMPDEST PUSH2 0xA30 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x90C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xA8F DUP3 DUP7 PUSH2 0x985 JUMP JUMPDEST PUSH2 0xA9C PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x90C JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xA30 DUP2 DUP5 PUSH2 0x91E JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xABC DUP3 DUP7 PUSH2 0x98E JUMP JUMPDEST PUSH2 0xAC9 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x90C JUMP JUMPDEST PUSH2 0x7F9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x90C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4FE DUP2 PUSH2 0x997 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xB24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xB45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FE DUP3 PUSH2 0xB92 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xEC DUP2 PUSH2 0xBFA JUMP JUMPDEST DUP1 PUSH2 0xEC DUP2 PUSH2 0xC04 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FE DUP3 PUSH2 0xB7E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FE DUP3 PUSH2 0xB88 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBDB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBC3 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xBEA JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x32B JUMPI INVALID JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x32B JUMPI INVALID JUMPDEST PUSH2 0xC17 DUP2 PUSH2 0xB63 JUMP JUMPDEST DUP2 EQ PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC17 DUP2 PUSH2 0xB71 JUMP JUMPDEST PUSH2 0xC17 DUP2 PUSH2 0xB6E JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 EXTCODECOPY 0xEB MSTORE8 0xAA CODESIZE 0x2D 0x48 0xA8 PUSH2 0x70AF SLT 0xC CODESIZE 0x49 0xF SWAP2 SWAP11 DUP4 CALLVALUE 0xC2 DUP12 0xC RETURNDATASIZE SSTORE LOG4 0x4A 0x2E 0xD8 PUSH9 0xD6C96C657870657269 PUSH14 0x656E74616CF564736F6C63430005 LT STOP BLOCKHASH ", "sourceMap": "683:1691:32:-;;;898:5:21;:18;;-1:-1:-1;;;;;;898:18:21;906:10;898:18;;;683:1691:32;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "608060405234801561001057600080fd5b50600436106100575760003560e01c8063607041081461005c5780638da5cb5b14610085578063b04fbddd1461008d578063c585bb93146100a2578063f2fde38b146100b5575b600080fd5b61006f61006a3660046108c1565b6100c8565b60405161007c91906109d3565b60405180910390f35b61006f6100f1565b6100a061009b366004610801565b610100565b005b6100a06100b03660046107db565b610192565b6100a06100c33660046107db565b6102bc565b6001600160e01b031981166000908152600160205260409020546001600160a01b03165b919050565b6000546001600160a01b031681565b835160005b818114610170576101688160001b87838151811061011f57fe5b602002602001015187848151811061013357fe5b602002602001015187858151811061014757fe5b602002602001015187868151811061015b57fe5b602002602001015161032e565b600101610105565b5060405162461bcd60e51b815260040161018990610ad6565b60405180910390fd5b61019a61047d565b6000816001600160a01b031663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101d557600080fd5b505afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061020d91908101906108df565b6001600160e01b031981166000908152600160205260409020549091506001600160a01b0316801561024b5761024b61024683836104ac565b610504565b6001600160e01b031982166000908152600160205260409081902080546001600160a01b0319166001600160a01b038616179055517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c03194906102af9084908690610a39565b60405180910390a1505050565b6102c461047d565b6001600160a01b0381166102e2576102dd61024661050c565b61032b565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b801561047657602084518161033f57fe5b06600414610356576103566102466000878761052a565b6000610368858263ffffffff61058516565b6001600160e01b031981166000908152600160205260409020549091506001600160a01b0316806103a2576103a26102466001898961052a565b604051606090632a17967960e21b906103c5908990899089908990602401610a47565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b03168360405161041691906109c7565b6000604051808303816000865af19150503d8060008114610453576040519150601f19603f3d011682016040523d82523d6000602084013e610458565b606091505b509150915081610470576104706102468b8b846105b9565b50505050505b5050505050565b6000546001600160a01b031633146104aa576000546104aa906102469033906001600160a01b03166105d8565b565b60606311c7b72060e01b83836040516024016104c9929190610a39565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b92915050565b805160208201fd5b604080518082019091526004815263734f6e1f60e11b602082015290565b606063488219a660e01b84848460405160240161054993929190610a81565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b9392505050565b600081600401835110156105a6576105a661024660038551856004016105f5565b5001602001516001600160e01b03191690565b6060634678472b60e01b848484604051602401610549939291906109fc565b6060631de45ad160e01b83836040516024016104c99291906109e1565b6060632800659560e01b84848460405160240161054993929190610aae565b80356104fe81610c0e565b600082601f83011261063057600080fd5b813561064361063e82610b0d565b610ae6565b9150818183526020840193506020810190508385602084028201111561066857600080fd5b60005b83811015610694578161067e8882610614565b845250602092830192919091019060010161066b565b5050505092915050565b600082601f8301126106af57600080fd5b81356106bd61063e82610b0d565b81815260209384019390925082018360005b8381101561069457813586016106e58882610781565b84525060209283019291909101906001016106cf565b600082601f83011261070c57600080fd5b813561071a61063e82610b0d565b9150818183526020840193506020810190508385602084028201111561073f57600080fd5b60005b83811015610694578161075588826107d0565b8452506020928301929190910190600101610742565b80356104fe81610c22565b80516104fe81610c22565b600082601f83011261079257600080fd5b81356107a061063e82610b2e565b915080825260208301602083018583830111156107bc57600080fd5b6107c7838284610bb4565b50505092915050565b80356104fe81610c2b565b6000602082840312156107ed57600080fd5b60006107f98484610614565b949350505050565b6000806000806080858703121561081757600080fd5b843567ffffffffffffffff81111561082e57600080fd5b61083a8782880161069e565b945050602085013567ffffffffffffffff81111561085757600080fd5b6108638782880161061f565b935050604085013567ffffffffffffffff81111561088057600080fd5b61088c8782880161061f565b925050606085013567ffffffffffffffff8111156108a957600080fd5b6108b5878288016106fb565b91505092959194509250565b6000602082840312156108d357600080fd5b60006107f9848461076b565b6000602082840312156108f157600080fd5b60006107f98484610776565b61090681610b63565b82525050565b61090681610b6e565b61090681610b71565b600061092982610b56565b6109338185610b5a565b9350610943818560208601610bc0565b61094c81610bf0565b9093019392505050565b600061096182610b56565b61096b81856100ec565b935061097b818560208601610bc0565b9290920192915050565b61090681610b9e565b61090681610ba9565b60006109a4601483610b5a565b731514905394d1915494d7d4d550d0d154d4d1955360621b815260200192915050565b600061057e8284610956565b602081016104fe82846108fd565b604081016109ef82856108fd565b61057e60208301846108fd565b60608101610a0a828661090c565b8181036020830152610a1c818561091e565b90508181036040830152610a30818461091e565b95945050505050565b604081016109ef8285610915565b60808082528101610a58818761091e565b9050610a6760208301866108fd565b610a7460408301856108fd565b610a30606083018461090c565b60608101610a8f8286610985565b610a9c602083018561090c565b8181036040830152610a30818461091e565b60608101610abc828661098e565b610ac9602083018561090c565b6107f9604083018461090c565b602080825281016104fe81610997565b60405181810167ffffffffffffffff81118282101715610b0557600080fd5b604052919050565b600067ffffffffffffffff821115610b2457600080fd5b5060209081020190565b600067ffffffffffffffff821115610b4557600080fd5b506020601f91909101601f19160190565b5190565b90815260200190565b60006104fe82610b92565b90565b6001600160e01b03191690565b806100ec81610bfa565b806100ec81610c04565b6001600160a01b031690565b60006104fe82610b7e565b60006104fe82610b88565b82818337506000910152565b60005b83811015610bdb578181015183820152602001610bc3565b83811115610bea576000848401525b50505050565b601f01601f191690565b6002811061032b57fe5b6008811061032b57fe5b610c1781610b63565b811461032b57600080fd5b610c1781610b71565b610c1781610b6e56fea365627a7a723158203ceb53aa382d48a86170af120c38490f919a8334c28b0c3d55a44a2ed868d6c96c6578706572696d656e74616cf564736f6c63430005100040", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x60704108 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x85 JUMPI DUP1 PUSH4 0xB04FBDDD EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xC585BB93 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x8C1 JUMP JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x9D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0xF1 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x801 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA0 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x170 JUMPI PUSH2 0x168 DUP2 PUSH1 0x0 SHL DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x11F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x133 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x147 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x15B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x32E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x105 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x189 SWAP1 PUSH2 0xAD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0x47D JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE25532E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x20D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x8DF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x24B JUMPI PUSH2 0x24B PUSH2 0x246 DUP4 DUP4 PUSH2 0x4AC JUMP JUMPDEST PUSH2 0x504 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE MLOAD PUSH32 0xD2C6B762299C609BDB96520B58A49BFB80186934D4F71A86A367571A15C03194 SWAP1 PUSH2 0x2AF SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0xA39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x2C4 PUSH2 0x47D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2E2 JUMPI PUSH2 0x2DD PUSH2 0x246 PUSH2 0x50C JUMP JUMPDEST PUSH2 0x32B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x476 JUMPI PUSH1 0x20 DUP5 MLOAD DUP2 PUSH2 0x33F JUMPI INVALID JUMPDEST MOD PUSH1 0x4 EQ PUSH2 0x356 JUMPI PUSH2 0x356 PUSH2 0x246 PUSH1 0x0 DUP8 DUP8 PUSH2 0x52A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x368 DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x585 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x3A2 JUMPI PUSH2 0x3A2 PUSH2 0x246 PUSH1 0x1 DUP10 DUP10 PUSH2 0x52A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 SWAP1 PUSH4 0x2A179679 PUSH1 0xE2 SHL SWAP1 PUSH2 0x3C5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x24 ADD PUSH2 0xA47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x416 SWAP2 SWAP1 PUSH2 0x9C7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x453 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x458 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x470 JUMPI PUSH2 0x470 PUSH2 0x246 DUP12 DUP12 DUP5 PUSH2 0x5B9 JUMP JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x4AA JUMPI PUSH1 0x0 SLOAD PUSH2 0x4AA SWAP1 PUSH2 0x246 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5D8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH4 0x11C7B720 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4C9 SWAP3 SWAP2 SWAP1 PUSH2 0xA39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x488219A6 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x549 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA81 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 ADD DUP4 MLOAD LT ISZERO PUSH2 0x5A6 JUMPI PUSH2 0x5A6 PUSH2 0x246 PUSH1 0x3 DUP6 MLOAD DUP6 PUSH1 0x4 ADD PUSH2 0x5F5 JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x4678472B PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x549 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x60 PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4C9 SWAP3 SWAP2 SWAP1 PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x28006595 PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x549 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xAAE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4FE DUP2 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x630 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x643 PUSH2 0x63E DUP3 PUSH2 0xB0D JUMP JUMPDEST PUSH2 0xAE6 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x694 JUMPI DUP2 PUSH2 0x67E DUP9 DUP3 PUSH2 0x614 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x66B JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6BD PUSH2 0x63E DUP3 PUSH2 0xB0D JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x694 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x6E5 DUP9 DUP3 PUSH2 0x781 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x6CF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x71A PUSH2 0x63E DUP3 PUSH2 0xB0D JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x694 JUMPI DUP2 PUSH2 0x755 DUP9 DUP3 PUSH2 0x7D0 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x742 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4FE DUP2 PUSH2 0xC22 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x4FE DUP2 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7A0 PUSH2 0x63E DUP3 PUSH2 0xB2E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x7BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7C7 DUP4 DUP3 DUP5 PUSH2 0xBB4 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4FE DUP2 PUSH2 0xC2B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP5 DUP5 PUSH2 0x614 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x83A DUP8 DUP3 DUP9 ADD PUSH2 0x69E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x863 DUP8 DUP3 DUP9 ADD PUSH2 0x61F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x880 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88C DUP8 DUP3 DUP9 ADD PUSH2 0x61F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8B5 DUP8 DUP3 DUP9 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP5 DUP5 PUSH2 0x76B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP5 DUP5 PUSH2 0x776 JUMP JUMPDEST PUSH2 0x906 DUP2 PUSH2 0xB63 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x906 DUP2 PUSH2 0xB6E JUMP JUMPDEST PUSH2 0x906 DUP2 PUSH2 0xB71 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x929 DUP3 PUSH2 0xB56 JUMP JUMPDEST PUSH2 0x933 DUP2 DUP6 PUSH2 0xB5A JUMP JUMPDEST SWAP4 POP PUSH2 0x943 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBC0 JUMP JUMPDEST PUSH2 0x94C DUP2 PUSH2 0xBF0 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x961 DUP3 PUSH2 0xB56 JUMP JUMPDEST PUSH2 0x96B DUP2 DUP6 PUSH2 0xEC JUMP JUMPDEST SWAP4 POP PUSH2 0x97B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBC0 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x906 DUP2 PUSH2 0xB9E JUMP JUMPDEST PUSH2 0x906 DUP2 PUSH2 0xBA9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A4 PUSH1 0x14 DUP4 PUSH2 0xB5A JUMP JUMPDEST PUSH20 0x1514905394D1915494D7D4D550D0D154D4D19553 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57E DUP3 DUP5 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4FE DUP3 DUP5 PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x9EF DUP3 DUP6 PUSH2 0x8FD JUMP JUMPDEST PUSH2 0x57E PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xA0A DUP3 DUP7 PUSH2 0x90C JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xA1C DUP2 DUP6 PUSH2 0x91E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xA30 DUP2 DUP5 PUSH2 0x91E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x9EF DUP3 DUP6 PUSH2 0x915 JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA58 DUP2 DUP8 PUSH2 0x91E JUMP JUMPDEST SWAP1 POP PUSH2 0xA67 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x8FD JUMP JUMPDEST PUSH2 0xA74 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x8FD JUMP JUMPDEST PUSH2 0xA30 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x90C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xA8F DUP3 DUP7 PUSH2 0x985 JUMP JUMPDEST PUSH2 0xA9C PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x90C JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xA30 DUP2 DUP5 PUSH2 0x91E JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xABC DUP3 DUP7 PUSH2 0x98E JUMP JUMPDEST PUSH2 0xAC9 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x90C JUMP JUMPDEST PUSH2 0x7F9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x90C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4FE DUP2 PUSH2 0x997 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xB24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xB45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FE DUP3 PUSH2 0xB92 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xEC DUP2 PUSH2 0xBFA JUMP JUMPDEST DUP1 PUSH2 0xEC DUP2 PUSH2 0xC04 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FE DUP3 PUSH2 0xB7E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FE DUP3 PUSH2 0xB88 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBDB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBC3 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xBEA JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x32B JUMPI INVALID JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x32B JUMPI INVALID JUMPDEST PUSH2 0xC17 DUP2 PUSH2 0xB63 JUMP JUMPDEST DUP2 EQ PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC17 DUP2 PUSH2 0xB71 JUMP JUMPDEST PUSH2 0xC17 DUP2 PUSH2 0xB6E JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 EXTCODECOPY 0xEB MSTORE8 0xAA CODESIZE 0x2D 0x48 0xA8 PUSH2 0x70AF SLT 0xC CODESIZE 0x49 0xF SWAP2 SWAP11 DUP4 CALLVALUE 0xC2 DUP12 0xC RETURNDATASIZE SSTORE LOG4 0x4A 0x2E 0xD8 PUSH9 0xD6C96C657870657269 PUSH14 0x656E74616CF564736F6C63430005 LT STOP BLOCKHASH ", "sourceMap": "683:1691:32:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;683:1691:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:166:26;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;827:20:21;;;:::i;1676:696:32:-;;;;;;;;;:::i;:::-;;1390:700:26;;;;;;;;;:::i;1097:329:21:-;;;;;;;;;:::i;2299:166:26:-;-1:-1:-1;;;;;;2431:27:26;;2390:18;2431:27;;;:13;:27;;;;;;-1:-1:-1;;;;;2431:27:26;2299:166;;;;:::o;827:20:21:-;;;-1:-1:-1;;;;;827:20:21;;:::o;1676:696:32:-;1917:16;;1900:14;1943:383;1968:6;1963:1;:11;1943:383;;1995:320;2175:1;2167:10;;2195:9;2205:1;2195:12;;;;;;;;;;;;;;2225:13;2239:1;2225:16;;;;;;;;;;;;;;2259:11;2271:1;2259:14;;;;;;;;;;;;;;2291:7;2299:1;2291:10;;;;;;;;;;;;;;1995:21;:320::i;:::-;1976:3;;1943:383;;;;2335:30;;-1:-1:-1;;;2335:30:32;;;;;;;;;;;;;;;;1390:700:26;960:22:21;:20;:22::i;:::-;1549:19:26;1583:10;-1:-1:-1;;;;;1571:34:26;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1571:36:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1571:36:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1571:36:26;;;;;;;;;-1:-1:-1;;;;;;1645:27:26;;1617:25;1645:27;;;:13;:27;;;;;;1549:58;;-1:-1:-1;;;;;;1645:27:26;1686:31;;1682:207;;1733:145;1755:122;1816:12;1846:17;1755:43;:122::i;:::-;1733:21;:145::i;:::-;-1:-1:-1;;;;;;1948:27:26;;;;;;:13;:27;;;;;;;:40;;-1:-1:-1;;;;;;1948:40:26;-1:-1:-1;;;;;1948:40:26;;;;;2003:80;;;;;1948:27;;:40;;2003:80;;;;;;;;;;992:1:21;;1390:700:26;:::o;1097:329:21:-;960:22;:20;:22::i;:::-;-1:-1:-1;;;;;1193:22:21;;1189:231;;1231:70;1253:47;:45;:47::i;1231:70::-;1189:231;;;1332:5;:16;;-1:-1:-1;;;;;;1332:16:21;-1:-1:-1;;;;;1332:16:21;;;;;;;1367:42;;1332:16;;1388:10;;1367:42;;1332:5;1367:42;1189:231;1097:329;:::o;2854:2037:26:-;3109:10;;3105:1780;;3261:2;3242:9;:16;:21;;;;;;3267:1;3242:26;3238:311;;3288:246;3310:223;3377:76;3475:9;3506;3310:45;:223::i;3288:246::-;3597:19;3619:23;:9;3597:19;3619:23;:20;:23;:::i;:::-;-1:-1:-1;;;;;;3677:27:26;;3656:18;3677:27;;;:13;:27;;;;;;3597:45;;-1:-1:-1;;;;;;3677:27:26;3768:24;3764:303;;3812:240;3834:217;3901:70;3993:9;4024;3834:45;:217::i;3812:240::-;4175:192;;4146:26;;-1:-1:-1;;;4215:45:26;4175:192;;4278:9;;4305:4;;4327:2;;4347:6;;4175:192;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4175:192:26;;;;-1:-1:-1;;;;;4175:192:26;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;4175:192:26;4146:221;;4474:15;4491:23;4518:10;-1:-1:-1;;;;;4518:15:26;4534:13;4518:30;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4473:75:26;;;;4650:10;4645:230;;4680:180;4702:157;4769:9;4800;4831:10;4702:45;:157::i;4680:180::-;3105:1780;;;;;;2854:2037;;;;;:::o;1432:255:21:-;1526:5;;-1:-1:-1;;;;;1526:5:21;1512:10;:19;1508:173;;1650:5;;1547:123;;1569:100;;1622:10;;-1:-1:-1;;;;;1650:5:21;1569:35;:100::i;1547:123::-;1432:255::o;11110:326:3:-;11258:12;3091:10;11329:33;;11376:12;11402:17;11293:136;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;11293:136:3;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;11293:136:3;;;179:29:-1;;;;160:49;;;11293:136:3;-1:-1:-1;11110:326:3;;;;;:::o;1511:170:18:-;1654:9;1648:16;1641:4;1630:9;1626:20;1619:46;669:159:16;787:34;;;;;;;;;;;;-1:-1:-1;;;787:34:16;;;;669:159;:::o;11442:385:3:-;11635:12;3252:10;11706:35;;11755:9;11778;11801;11670:150;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;11670:150:3;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;11670:150:3;;;179:29:-1;;;;160:49;;;11670:150:3;-1:-1:-1;11442:385:3;;;;;;:::o;16814:871:12:-;16934:13;16978:5;16986:1;16978:9;16967:1;:8;:20;16963:290;;;17003:239;17025:216;17087:87;17192:1;:8;17218:5;17226:1;17218:9;17025:44;:216::i;17003:239::-;-1:-1:-1;17426:13:12;17329:2;17426:13;17420:20;-1:-1:-1;;;;;;17567:79:12;;16814:871::o;11833:369:3:-;12010:12;3413:10;12081:35;;12130:9;12153;12176;12045:150;;;;;;;;;;;387:276:16;511:12;183:10;582:25;;621:6;641:5;546:110;;;;;;;;;;1292:378:13;1480:12;1232:10;1551:37;;1602:9;1625:6;1645:8;1515:148;;;;;;;;;;;5:130:-1;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;891:693;;1013:3;1006:4;998:6;994:17;990:27;980:2;;1031:1;1028;1021:12;980:2;1068:6;1055:20;1090:85;1105:69;1167:6;1105:69;;1090:85;1203:21;;;1247:4;1235:17;;;;1081:94;;-1:-1;1260:14;;1235:17;1355:1;1340:238;1365:6;1362:1;1359:13;1340:238;;;1448:3;1435:17;1427:6;1423:30;1472:42;1510:3;1498:10;1472:42;;;1460:55;;-1:-1;1538:4;1529:14;;;;1557;;;;;1387:1;1380:9;1340:238;;1610:707;;1727:3;1720:4;1712:6;1708:17;1704:27;1694:2;;1745:1;1742;1735:12;1694:2;1782:6;1769:20;1804:80;1819:64;1876:6;1819:64;;1804:80;1795:89;;1901:5;1926:6;1919:5;1912:21;1956:4;1948:6;1944:17;1934:27;;1978:4;1973:3;1969:14;1962:21;;2031:6;2078:3;2070:4;2062:6;2058:17;2053:3;2049:27;2046:36;2043:2;;;2095:1;2092;2085:12;2043:2;2120:1;2105:206;2130:6;2127:1;2124:13;2105:206;;;2188:3;2210:37;2243:3;2231:10;2210:37;;;2198:50;;-1:-1;2271:4;2262:14;;;;2290;;;;;2152:1;2145:9;2105:206;;2325:128;2391:20;;2416:32;2391:20;2416:32;;2460:132;2537:13;;2555:32;2537:13;2555:32;;2600:432;;2697:3;2690:4;2682:6;2678:17;2674:27;2664:2;;2715:1;2712;2705:12;2664:2;2752:6;2739:20;2774:60;2789:44;2826:6;2789:44;;2774:60;2765:69;;2854:6;2847:5;2840:21;2890:4;2882:6;2878:17;2923:4;2916:5;2912:16;2958:3;2949:6;2944:3;2940:16;2937:25;2934:2;;;2975:1;2972;2965:12;2934:2;2985:41;3019:6;3014:3;3009;2985:41;;;2657:375;;;;;;;;3040:130;3107:20;;3132:33;3107:20;3132:33;;3177:241;;3281:2;3269:9;3260:7;3256:23;3252:32;3249:2;;;3297:1;3294;3287:12;3249:2;3332:1;3349:53;3394:7;3374:9;3349:53;;;3339:63;3243:175;-1:-1;;;;3243:175;3425:1171;;;;;3685:3;3673:9;3664:7;3660:23;3656:33;3653:2;;;3702:1;3699;3692:12;3653:2;3737:31;;3788:18;3777:30;;3774:2;;;3820:1;3817;3810:12;3774:2;3840:83;3915:7;3906:6;3895:9;3891:22;3840:83;;;3830:93;;3716:213;3988:2;3977:9;3973:18;3960:32;4012:18;4004:6;4001:30;3998:2;;;4044:1;4041;4034:12;3998:2;4064:78;4134:7;4125:6;4114:9;4110:22;4064:78;;;4054:88;;3939:209;4207:2;4196:9;4192:18;4179:32;4231:18;4223:6;4220:30;4217:2;;;4263:1;4260;4253:12;4217:2;4283:78;4353:7;4344:6;4333:9;4329:22;4283:78;;;4273:88;;4158:209;4426:2;4415:9;4411:18;4398:32;4450:18;4442:6;4439:30;4436:2;;;4482:1;4479;4472:12;4436:2;4502:78;4572:7;4563:6;4552:9;4548:22;4502:78;;;4492:88;;4377:209;3647:949;;;;;;;;4603:239;;4706:2;4694:9;4685:7;4681:23;4677:32;4674:2;;;4722:1;4719;4712:12;4674:2;4757:1;4774:52;4818:7;4798:9;4774:52;;4849:261;;4963:2;4951:9;4942:7;4938:23;4934:32;4931:2;;;4979:1;4976;4969:12;4931:2;5014:1;5031:63;5086:7;5066:9;5031:63;;5117:113;5200:24;5218:5;5200:24;;;5195:3;5188:37;5182:48;;;5237:113;5320:24;5338:5;5320:24;;5357:110;5438:23;5455:5;5438:23;;5474:343;;5584:38;5616:5;5584:38;;;5634:70;5697:6;5692:3;5634:70;;;5627:77;;5709:52;5754:6;5749:3;5742:4;5735:5;5731:16;5709:52;;;5782:29;5804:6;5782:29;;;5773:39;;;;5564:253;-1:-1;;;5564:253;5824:356;;5952:38;5984:5;5952:38;;;6002:88;6083:6;6078:3;6002:88;;;5995:95;;6095:52;6140:6;6135:3;6128:4;6121:5;6117:16;6095:52;;;6159:16;;;;;5932:248;-1:-1;;5932:248;6187:188;6301:68;6363:5;6301:68;;6382:194;6499:71;6564:5;6499:71;;6584:320;;6744:67;6808:2;6803:3;6744:67;;;-1:-1;;;6824:43;;6895:2;6886:12;;6730:174;-1:-1;;6730:174;7032:262;;7176:93;7265:3;7256:6;7176:93;;7301:213;7419:2;7404:18;;7433:71;7408:9;7477:6;7433:71;;7521:324;7667:2;7652:18;;7681:71;7656:9;7725:6;7681:71;;;7763:72;7831:2;7820:9;7816:18;7807:6;7763:72;;7852:603;8062:2;8047:18;;8076:71;8051:9;8120:6;8076:71;;;8195:9;8189:4;8185:20;8180:2;8169:9;8165:18;8158:48;8220:76;8291:4;8282:6;8220:76;;;8212:84;;8344:9;8338:4;8334:20;8329:2;8318:9;8314:18;8307:48;8369:76;8440:4;8431:6;8369:76;;;8361:84;8033:422;-1:-1;;;;;8033:422;8462:320;8606:2;8591:18;;8620:69;8595:9;8662:6;8620:69;;8789:631;9009:3;9024:47;;;8994:19;;9085:76;8994:19;9147:6;9085:76;;;9077:84;;9172:72;9240:2;9229:9;9225:18;9216:6;9172:72;;;9255;9323:2;9312:9;9308:18;9299:6;9255:72;;;9338;9406:2;9395:9;9391:18;9382:6;9338:72;;9427:581;9650:2;9635:18;;9664:102;9639:9;9739:6;9664:102;;;9777:72;9845:2;9834:9;9830:18;9821:6;9777:72;;;9897:9;9891:4;9887:20;9882:2;9871:9;9867:18;9860:48;9922:76;9993:4;9984:6;9922:76;;10015:503;10223:2;10208:18;;10237:105;10212:9;10315:6;10237:105;;;10353:72;10421:2;10410:9;10406:18;10397:6;10353:72;;;10436;10504:2;10493:9;10489:18;10480:6;10436:72;;10525:407;10716:2;10730:47;;;10701:18;;10791:131;10701:18;10791:131;;10939:256;11001:2;10995:9;11027:17;;;11102:18;11087:34;;11123:22;;;11084:62;11081:2;;;11159:1;11156;11149:12;11081:2;11175;11168:22;10979:216;;-1:-1;10979:216;11202:304;;11361:18;11353:6;11350:30;11347:2;;;11393:1;11390;11383:12;11347:2;-1:-1;11428:4;11416:17;;;11481:15;;11284:222;12140:317;;12279:18;12271:6;12268:30;12265:2;;;12311:1;12308;12301:12;12265:2;-1:-1;12442:4;12378;12355:17;;;;-1:-1;;12351:33;12432:15;;12202:255;12464:121;12551:12;;12522:63;12593:162;12695:19;;;12744:4;12735:14;;12688:67;13088:91;;13150:24;13168:5;13150:24;;13186:72;13248:5;13231:27;13265:144;-1:-1;;;;;;13326:78;;13309:100;13416:172;13511:5;13517:66;13511:5;13517:66;;13595:178;13693:5;13699:69;13693:5;13699:69;;13780:121;-1:-1;;;;;13842:54;;13825:76;13987:172;;14097:57;14148:5;14097:57;;14166:178;;14279:60;14333:5;14279:60;;14352:145;14433:6;14428:3;14423;14410:30;-1:-1;14489:1;14471:16;;14464:27;14403:94;14506:268;14571:1;14578:101;14592:6;14589:1;14586:13;14578:101;;;14659:11;;;14653:18;14640:11;;;14633:39;14614:2;14607:10;14578:101;;;14694:6;14691:1;14688:13;14685:2;;;14759:1;14750:6;14745:3;14741:16;14734:27;14685:2;14555:219;;;;;14782:97;14870:2;14850:14;-1:-1;;14846:28;;14830:49;14887:124;14989:1;14982:5;14979:12;14969:2;;14995:9;15018:127;15123:1;15116:5;15113:12;15103:2;;15129:9;15152:117;15221:24;15239:5;15221:24;;;15214:5;15211:35;15201:2;;15260:1;15257;15250:12;15276:115;15344:23;15361:5;15344:23;;15398:117;15467:24;15485:5;15467:24;"}}}}, "contracts/exchange/MixinWrapperFunctions.sol": {"MixinWrapperFunctions": {"abi": [{"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes4", "name": "id", "type": "bytes4"}, {"indexed": false, "internalType": "address", "name": "assetProxy", "type": "address"}], "name": "AssetProxyRegistered", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}], "name": "Cancel", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "orderSenderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "orderEpoch", "type": "uint256"}], "name": "CancelUpTo", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"indexed": false, "internalType": "address", "name": "takerAddress", "type": "address"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "name": "Fill", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "previousOwner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "OwnershipTransferred", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "oldProtocolFeeCollector", "type": "address"}, {"indexed": false, "internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "ProtocolFeeCollectorAddress", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "uint256", "name": "oldProtocolFeeMultiplier", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "ProtocolFeeMultiplier", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "signerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "validatorAddress", "type": "address"}, {"indexed": false, "internalType": "bool", "name": "isApproved", "type": "bool"}], "name": "SignatureValidatorApproval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "bytes32", "name": "transactionHash", "type": "bytes32"}], "name": "TransactionExecution", "type": "event"}, {"constant": true, "inputs": [], "name": "EIP1271_MAGIC_VALUE", "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "EIP712_EXCHANGE_DOMAIN_HASH", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "allowedValidators", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}], "name": "batchCancelOrders", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction[]", "name": "transactions", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchExecuteTransactions", "outputs": [{"internalType": "bytes[]", "name": "returnData", "type": "bytes[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrKillOrders", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrders", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "cancelOrder", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "targetOrderEpoch", "type": "uint256"}], "name": "cancelOrdersUpTo", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "cancelled", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "currentContextAddress", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "detachProtocolFeeCollector", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "executeTransaction", "outputs": [{"internalType": "bytes", "name": "", "type": "bytes"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "fillOrKillOrder", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "fillOrder", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "filled", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes4", "name": "assetProxyId", "type": "bytes4"}], "name": "getAssetProxy", "outputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "getOrderInfo", "outputs": [{"components": [{"internalType": "enum LibOrder.OrderStatus", "name": "orderStatus", "type": "uint8"}, {"internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256"}], "internalType": "struct LibOrder.OrderInfo", "name": "orderInfo", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidHashSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidOrderSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidTransactionSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "makerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketBuyOrdersFillOrKill", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "makerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketBuyOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketSellOrdersFillOrKill", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketSellOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "orderEpoch", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}], "name": "preSign", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "address", "name": "", "type": "address"}], "name": "preSigned", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeCollector", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeMultiplier", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "name": "registerAssetProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "setProtocolFeeCollectorAddress", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "setProtocolFeeMultiplier", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "validatorAddress", "type": "address"}, {"internalType": "bool", "name": "approval", "type": "bool"}], "name": "setSignatureValidatorApproval", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "transactionsExecuted", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/contracts-erc20/contracts/src/interfaces/IERC20Token.sol": {"IERC20Token": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "_owner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "_spender", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "_from", "type": "address"}, {"indexed": true, "internalType": "address", "name": "_to", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "_owner", "type": "address"}, {"internalType": "address", "name": "_spender", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_spender", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "_owner", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_to", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_from", "type": "address"}, {"internalType": "address", "name": "_to", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/contracts-erc20/contracts/src/interfaces/IEtherToken.sol": {"IEtherToken": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "_owner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "_spender", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "_from", "type": "address"}, {"indexed": true, "internalType": "address", "name": "_to", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "_owner", "type": "address"}, {"internalType": "address", "name": "_spender", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_spender", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "_owner", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "deposit", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_to", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_from", "type": "address"}, {"internalType": "address", "name": "_to", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol": {"LibEIP712ExchangeDomain": {"abi": [{"inputs": [{"internalType": "uint256", "name": "chainId", "type": "uint256"}, {"internalType": "address", "name": "verifyingContractAddressIfExists", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": true, "inputs": [], "name": "EIP712_EXCHANGE_DOMAIN_HASH", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "608060405234801561001057600080fd5b506040516101f53803806101f58339818101604052604081101561003357600080fd5b50805160209091015160006001600160a01b038216156100535781610055565b305b90506100ad6040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b81525085846100b960201b61004b1760201c565b60005550610110915050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b60d78061011e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c26cfecd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b60005481565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea265627a7a72315820aeb32cd9ed855b36ec9c9b2642302c74a39ee2cf86313de7ee6e871ef08201f264736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1F5 CODESIZE SUB DUP1 PUSH2 0x1F5 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x53 JUMPI DUP2 PUSH2 0x55 JUMP JUMPDEST ADDRESS JUMPDEST SWAP1 POP PUSH2 0xAD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH11 0xC1E08141C9BDD1BD8DBDB PUSH1 0xAA SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x332E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP6 DUP5 PUSH2 0xB9 PUSH1 0x20 SHL PUSH2 0x4B OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SSTORE POP PUSH2 0x110 SWAP2 POP POP JUMP JUMPDEST DUP4 MLOAD PUSH1 0x20 SWAP5 DUP6 ADD KECCAK256 DUP4 MLOAD SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 MSTORE SWAP6 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xD7 DUP1 PUSH2 0x11E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC26CFECD EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x20 SWAP5 DUP6 ADD KECCAK256 DUP4 MLOAD SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 MSTORE SWAP6 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xAE 0xB3 0x2C 0xD9 0xED DUP6 JUMPDEST CALLDATASIZE 0xEC SWAP13 SWAP12 0x26 TIMESTAMP ADDRESS 0x2C PUSH21 0xA39EE2CF86313DE7EE6E871EF08201F264736F6C63 NUMBER STOP SDIV LT STOP ORIGIN ", "sourceMap": "665:1175:36:-;;;1354:484;8:9:-1;5:2;;;30:1;27;20:12;5:2;1354:484:36;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1354:484:36;;;;;;;1477:32;-1:-1:-1;;;;;1512:46:36;;;:97;;1577:32;1512:97;;;1569:4;1512:97;1477:132;;1649:182;1689:28;;;;;;;;;;;;;-1:-1:-1;;;1689:28:36;;;1731:31;;;;;;;;;;;;;-1:-1:-1;;;1731:31:36;;;1776:7;1797:24;1649:26;;;;;:182;;:::i;:::-;1619:27;:212;-1:-1:-1;665:1175:36;;-1:-1:-1;;665:1175:36;1285:1263:15;1997:11;;1992:2;1982:13;;;1972:37;2069:14;;2051:16;;;2041:43;;;;2158:2;2152:9;;962:66;2213:26;;2259:15;;;2252:33;;;;2305:15;;;2298:36;;;;2366:2;2354:15;;2347:32;2411:3;2399:16;;2392:43;2505:3;2487:22;;;1285:1263::o;665:1175:36:-;;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c26cfecd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b60005481565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea265627a7a72315820aeb32cd9ed855b36ec9c9b2642302c74a39ee2cf86313de7ee6e871ef08201f264736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC26CFECD EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x20 SWAP5 DUP6 ADD KECCAK256 DUP4 MLOAD SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 MSTORE SWAP6 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xAE 0xB3 0x2C 0xD9 0xED DUP6 JUMPDEST CALLDATASIZE 0xEC SWAP13 SWAP12 0x26 TIMESTAMP ADDRESS 0x2C PUSH21 0xA39EE2CF86313DE7EE6E871EF08201F264736F6C63 NUMBER STOP SDIV LT STOP ORIGIN ", "sourceMap": "665:1175:36:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;665:1175:36;;;;;;;;;;;;;;;;;;;1066:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;1285:1263:15:-;1997:11;;1992:2;1982:13;;;1972:37;2069:14;;2051:16;;;2041:43;;;;2158:2;2152:9;;962:66;2213:26;;2259:15;;;2252:33;;;;2305:15;;;2298:36;;;;2366:2;2354:15;;2347:32;2411:3;2399:16;;2392:43;2505:3;2487:22;;;1285:1263::o"}}}}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol": {"LibExchangeRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b1a17c059a2f6ae69cc75323b684acb2f7a5abe15aa30471429142d566b651c264736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB1 LOG1 PUSH29 0x59A2F6AE69CC75323B684ACB2F7A5ABE15AA30471429142D566B651C2 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "694:14164:37:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b1a17c059a2f6ae69cc75323b684acb2f7a5abe15aa30471429142d566b651c264736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB1 LOG1 PUSH29 0x59A2F6AE69CC75323B684ACB2F7A5ABE15AA30471429142D566B651C2 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "694:14164:37:-;;;;;;;;"}}}}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol": {"LibFillResults": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158207b6393c7eea6688db8086e4fe2bdf6cfbcb48734bd5451c261ba0e1dfddc6d3564736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH28 0x6393C7EEA6688DB8086E4FE2BDF6CFBCB48734BD5451C261BA0E1DFD 0xDC PUSH14 0x3564736F6C634300051000320000 ", "sourceMap": "716:21347:38:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158207b6393c7eea6688db8086e4fe2bdf6cfbcb48734bd5451c261ba0e1dfddc6d3564736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH28 0x6393C7EEA6688DB8086E4FE2BDF6CFBCB48734BD5451C261BA0E1DFD 0xDC PUSH14 0x3564736F6C634300051000320000 ", "sourceMap": "716:21347:38:-;;;;;;;;"}}}}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibMath.sol": {"LibMath": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582063da4bf0257559552899f2f180c11facbecbc5aa11f9d1516c142dcf723d02b364736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH4 0xDA4BF025 PUSH22 0x59552899F2F180C11FACBECBC5AA11F9D1516C142DCF PUSH19 0x3D02B364736F6C634300051000320000000000 ", "sourceMap": "763:6879:39:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582063da4bf0257559552899f2f180c11facbecbc5aa11f9d1516c142dcf723d02b364736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH4 0xDA4BF025 PUSH22 0x59552899F2F180C11FACBECBC5AA11F9D1516C142DCF PUSH19 0x3D02B364736F6C634300051000320000000000 ", "sourceMap": "763:6879:39:-;;;;;;;;"}}}}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibMathRichErrors.sol": {"LibMathRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582037bb74344e737e582bea42100c1ecfb6a13a25eed83e3c1958b5135f6551b52b64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CALLDATACOPY 0xBB PUSH21 0x344E737E582BEA42100C1ECFB6A13A25EED83E3C19 PC 0xB5 SGT 0x5F PUSH6 0x51B52B64736F PUSH13 0x63430005100032000000000000 ", "sourceMap": "26:831:40:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582037bb74344e737e582bea42100c1ecfb6a13a25eed83e3c1958b5135f6551b52b64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CALLDATACOPY 0xBB PUSH21 0x344E737E582BEA42100C1ECFB6A13A25EED83E3C19 PC 0xB5 SGT 0x5F PUSH6 0x51B52B64736F PUSH13 0x63430005100032000000000000 ", "sourceMap": "26:831:40:-;;;;;;;;"}}}}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol": {"LibOrder": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820ad7be678b2fc2ca0de45b228606f8745539dda5d5d5e3a30245bb2ac7e60045a64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xAD PUSH28 0xE678B2FC2CA0DE45B228606F8745539DDA5D5D5E3A30245BB2AC7E60 DIV GAS PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "665:7281:41:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820ad7be678b2fc2ca0de45b228606f8745539dda5d5d5e3a30245bb2ac7e60045a64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xAD PUSH28 0xE678B2FC2CA0DE45B228606F8745539DDA5D5D5E3A30245BB2AC7E60 DIV GAS PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "665:7281:41:-;;;;;;;;"}}}}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol": {"LibZeroExTransaction": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60636023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea365627a7a72315820d5354371a4569f84f13b73b221f76ca5839a030a9549d8448855c1d6f67d2b066c6578706572696d656e74616cf564736f6c63430005100040", "opcodes": "PUSH1 0x63 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xD5 CALLDATALOAD NUMBER PUSH18 0xA4569F84F13B73B221F76CA5839A030A9549 0xD8 DIFFICULTY DUP9 SSTORE 0xC1 0xD6 0xF6 PUSH30 0x2B066C6578706572696D656E74616CF564736F6C63430005100040000000 ", "sourceMap": "699:3631:42:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea365627a7a72315820d5354371a4569f84f13b73b221f76ca5839a030a9549d8448855c1d6f67d2b066c6578706572696d656e74616cf564736f6c63430005100040", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xD5 CALLDATALOAD NUMBER PUSH18 0xA4569F84F13B73B221F76CA5839A030A9549 0xD8 DIFFICULTY DUP9 SSTORE 0xC1 0xD6 0xF6 PUSH30 0x2B066C6578706572696D656E74616CF564736F6C63430005100040000000 ", "sourceMap": "699:3631:42:-;;;;;;;;"}}}}, "contracts/exchange/contracts-staking/contracts/src/interfaces/IStaking.sol": {"IStaking": {"abi": [{"constant": false, "inputs": [{"internalType": "address", "name": "addr", "type": "address"}], "name": "addExchangeAddress", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}, {"internalType": "address", "name": "member", "type": "address"}], "name": "computeRewardBalanceOfDelegator", "outputs": [{"internalType": "uint256", "name": "reward", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "computeRewardBalanceOfOperator", "outputs": [{"internalType": "uint256", "name": "reward", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint32", "name": "operatorShare", "type": "uint32"}, {"internalType": "bool", "name": "addOperatorAsMaker", "type": "bool"}], "name": "createStakingPool", "outputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}, {"internalType": "uint32", "name": "newOperatorShare", "type": "uint32"}], "name": "decreaseStakingPoolOperatorShare", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "endEpoch", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "finalizePool", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "getCurrentEpochEarliestEndTimeInSeconds", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "enum IStructs.StakeStatus", "name": "stakeStatus", "type": "uint8"}], "name": "getGlobalStakeByStatus", "outputs": [{"components": [{"internalType": "uint64", "name": "currentEpoch", "type": "uint64"}, {"internalType": "uint96", "name": "currentEpochBalance", "type": "uint96"}, {"internalType": "uint96", "name": "nextEpochBalance", "type": "uint96"}], "internalType": "struct IStructs.StoredBalance", "name": "balance", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}, {"internalType": "enum IStructs.StakeStatus", "name": "stakeStatus", "type": "uint8"}], "name": "getOwnerStakeByStatus", "outputs": [{"components": [{"internalType": "uint64", "name": "currentEpoch", "type": "uint64"}, {"internalType": "uint96", "name": "currentEpochBalance", "type": "uint96"}, {"internalType": "uint96", "name": "nextEpochBalance", "type": "uint96"}], "internalType": "struct IStructs.StoredBalance", "name": "balance", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getParams", "outputs": [{"internalType": "uint256", "name": "_epochDurationInSeconds", "type": "uint256"}, {"internalType": "uint32", "name": "_rewardDelegatedStakeWeight", "type": "uint32"}, {"internalType": "uint256", "name": "_minimumPoolStake", "type": "uint256"}, {"internalType": "uint32", "name": "_cobbDouglasAlphaNumerator", "type": "uint32"}, {"internalType": "uint32", "name": "_cobbDouglasAlphaDenominator", "type": "uint32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}, {"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "getStakeDelegatedToPoolByOwner", "outputs": [{"components": [{"internalType": "uint64", "name": "currentEpoch", "type": "uint64"}, {"internalType": "uint96", "name": "currentEpochBalance", "type": "uint96"}, {"internalType": "uint96", "name": "nextEpochBalance", "type": "uint96"}], "internalType": "struct IStructs.StoredBalance", "name": "balance", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "getStakingPool", "outputs": [{"components": [{"internalType": "address", "name": "operator", "type": "address"}, {"internalType": "uint32", "name": "operatorShare", "type": "uint32"}], "internalType": "struct IStructs.Pool", "name": "", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "getStakingPoolStatsThisEpoch", "outputs": [{"components": [{"internalType": "uint256", "name": "feesCollected", "type": "uint256"}, {"internalType": "uint256", "name": "weightedStake", "type": "uint256"}, {"internalType": "uint256", "name": "membersStake", "type": "uint256"}], "internalType": "struct IStructs.PoolStats", "name": "", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "getTotalStakeDelegatedToPool", "outputs": [{"components": [{"internalType": "uint64", "name": "currentEpoch", "type": "uint64"}, {"internalType": "uint96", "name": "currentEpochBalance", "type": "uint96"}, {"internalType": "uint96", "name": "nextEpochBalance", "type": "uint96"}], "internalType": "struct IStructs.StoredBalance", "name": "balance", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getWethContract", "outputs": [{"internalType": "contract IEtherToken", "name": "wethContract", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getZrxVault", "outputs": [{"internalType": "contract IZrxVault", "name": "zrxVault", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "init", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "joinStakingPoolAsMaker", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "enum IStructs.StakeStatus", "name": "status", "type": "uint8"}, {"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "internalType": "struct IStructs.StakeInfo", "name": "from", "type": "tuple"}, {"components": [{"internalType": "enum IStructs.StakeStatus", "name": "status", "type": "uint8"}, {"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "internalType": "struct IStructs.StakeInfo", "name": "to", "type": "tuple"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "moveStake", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "payerAddress", "type": "address"}, {"internalType": "uint256", "name": "protocolFee", "type": "uint256"}], "name": "payProtocolFee", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "addr", "type": "address"}], "name": "removeExchangeAddress", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "_epochDurationInSeconds", "type": "uint256"}, {"internalType": "uint32", "name": "_rewardDelegatedStakeWeight", "type": "uint32"}, {"internalType": "uint256", "name": "_minimumPoolStake", "type": "uint256"}, {"internalType": "uint32", "name": "_cobbDouglasAlphaNumerator", "type": "uint32"}, {"internalType": "uint32", "name": "_cobbDouglasAlphaDenominator", "type": "uint32"}], "name": "setParams", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "stake", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "unstake", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "poolId", "type": "bytes32"}], "name": "withdrawDelegatorRewards", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/contracts-staking/contracts/src/interfaces/IStructs.sol": {"IStructs": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820e2a828086f63a71db624ea73ea9234eccc3bec8b4ea83c05b2379cee1136d79c64736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE2 0xA8 0x28 ADDMOD PUSH16 0x63A71DB624EA73EA9234ECCC3BEC8B4E 0xA8 EXTCODECOPY SDIV 0xB2 CALLDATACOPY SWAP13 0xEE GT CALLDATASIZE 0xD7 SWAP13 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "606:2780:44:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;606:2780:44;;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "6080604052600080fdfea265627a7a72315820e2a828086f63a71db624ea73ea9234eccc3bec8b4ea83c05b2379cee1136d79c64736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE2 0xA8 0x28 ADDMOD PUSH16 0x63A71DB624EA73EA9234ECCC3BEC8B4E 0xA8 EXTCODECOPY SDIV 0xB2 CALLDATACOPY SWAP13 0xEE GT CALLDATASIZE 0xD7 SWAP13 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "606:2780:44:-;;;;;"}}}}, "contracts/exchange/contracts-staking/contracts/src/interfaces/IZrxVault.sol": {"IZrxVault": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "staker", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "Deposit", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "sender", "type": "address"}], "name": "InCatastrophicFailureMode", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "stakingProxyAddress", "type": "address"}], "name": "StakingProxySet", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "staker", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "Withdraw", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "zrxProxyAddress", "type": "address"}], "name": "ZrxProxySet", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "balanceOfZrxVault", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "depositFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "enterCatastrophicFailure", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_stakingProxyAddress", "type": "address"}], "name": "setStakingProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "zrxProxyAddress", "type": "address"}], "name": "setZrxProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}], "name": "withdrawAllFrom", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "staker", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "withdrawFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/contracts-utils/contracts/src/LibBytes.sol": {"LibBytes": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820c28a9887d61b6daba45cfa8ac913c50894f51816c11b7f939de8e958ab6d6e0264736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC2 DUP11 SWAP9 DUP8 0xD6 SHL PUSH14 0xABA45CFA8AC913C50894F51816C1 SHL PUSH32 0x939DE8E958AB6D6E0264736F6C63430005100032000000000000000000000000 ", "sourceMap": "672:17543:46:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820c28a9887d61b6daba45cfa8ac913c50894f51816c11b7f939de8e958ab6d6e0264736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC2 DUP11 SWAP9 DUP8 0xD6 SHL PUSH14 0xABA45CFA8AC913C50894F51816C1 SHL PUSH32 0x939DE8E958AB6D6E0264736F6C63430005100032000000000000000000000000 ", "sourceMap": "672:17543:46:-;;;;;;;;"}}}}, "contracts/exchange/contracts-utils/contracts/src/LibBytesRichErrors.sol": {"LibBytesRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158209930c5b11584f18c8a7399a12d1738c83dbba9018a5e7203adc12e98b300025e64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP10 ADDRESS 0xC5 0xB1 ISZERO DUP5 CALL DUP13 DUP11 PUSH20 0x99A12D1738C83DBBA9018A5E7203ADC12E98B300 MUL 0x5E PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "606:1066:47:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158209930c5b11584f18c8a7399a12d1738c83dbba9018a5e7203adc12e98b300025e64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP10 ADDRESS 0xC5 0xB1 ISZERO DUP5 CALL DUP13 DUP11 PUSH20 0x99A12D1738C83DBBA9018A5E7203ADC12E98B300 MUL 0x5E PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "606:1066:47:-;;;;;;;;"}}}}, "contracts/exchange/contracts-utils/contracts/src/LibEIP1271.sol": {"LibEIP1271": {"abi": [{"constant": true, "inputs": [], "name": "EIP1271_MAGIC_VALUE", "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}], "payable": false, "stateMutability": "view", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "6080604052348015600f57600080fd5b5060908061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063dd885e2d14602d575b600080fd5b60336050565b604080516001600160e01b03199092168252519081900360200190f35b6320c13b0b60e01b8156fea265627a7a723158205553de34e921da3262f71cb18e297f220cbe040f2595898e11a516589ffd9d9f64736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x90 DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDD885E2D EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH4 0x20C13B0B PUSH1 0xE0 SHL DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SSTORE MSTORE8 0xDE CALLVALUE 0xE9 0x21 0xDA ORIGIN PUSH3 0xF71CB1 DUP15 0x29 PUSH32 0x220CBE040F2595898E11A516589FFD9D9F64736F6C6343000510003200000000 ", "sourceMap": "606:181:48:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;606:181:48;;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063dd885e2d14602d575b600080fd5b60336050565b604080516001600160e01b03199092168252519081900360200190f35b6320c13b0b60e01b8156fea265627a7a723158205553de34e921da3262f71cb18e297f220cbe040f2595898e11a516589ffd9d9f64736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDD885E2D EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH4 0x20C13B0B PUSH1 0xE0 SHL DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SSTORE MSTORE8 0xDE CALLVALUE 0xE9 0x21 0xDA ORIGIN PUSH3 0xF71CB1 DUP15 0x29 PUSH32 0x220CBE040F2595898E11A516589FFD9D9F64736F6C6343000510003200000000 ", "sourceMap": "606:181:48:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;606:181:48;;;;;;;;;;;;;;;;;;;729:55;;;:::i;:::-;;;;-1:-1:-1;;;;;;729:55:48;;;;;;;;;;;;;;;-1:-1:-1;;;729:55:48;:::o"}}}}, "contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol": {"LibEIP712": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158205b0cdcea86c17a7770beae80d272a2f5a68b50857d5feaa55f15e0ff1918eb7e64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 JUMPDEST 0xC 0xDC 0xEA DUP7 0xC1 PUSH27 0x7770BEAE80D272A2F5A68B50857D5FEAA55F15E0FF1918EB7E6473 PUSH16 0x6C634300051000320000000000000000 ", "sourceMap": "606:3175:49:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158205b0cdcea86c17a7770beae80d272a2f5a68b50857d5feaa55f15e0ff1918eb7e64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 JUMPDEST 0xC 0xDC 0xEA DUP7 0xC1 PUSH27 0x7770BEAE80D272A2F5A68B50857D5FEAA55F15E0FF1918EB7E6473 PUSH16 0x6C634300051000320000000000000000 ", "sourceMap": "606:3175:49:-;;;;;;;;"}}}}, "contracts/exchange/contracts-utils/contracts/src/LibOwnableRichErrors.sol": {"LibOwnableRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582087402b8ea5a88a03aa163029d5553a3730a7d2b00641d786589408e5eacaa18b64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 DUP8 BLOCKHASH 0x2B DUP15 0xA5 0xA8 DUP11 SUB 0xAA AND ADDRESS 0x29 0xD5 SSTORE GASPRICE CALLDATACOPY ADDRESS 0xA7 0xD2 0xB0 MOD COINBASE 0xD7 DUP7 PC SWAP5 ADDMOD 0xE5 0xEA 0xCA LOG1 DUP12 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "26:804:50:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582087402b8ea5a88a03aa163029d5553a3730a7d2b00641d786589408e5eacaa18b64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 DUP8 BLOCKHASH 0x2B DUP15 0xA5 0xA8 DUP11 SUB 0xAA AND ADDRESS 0x29 0xD5 SSTORE GASPRICE CALLDATACOPY ADDRESS 0xA7 0xD2 0xB0 MOD COINBASE 0xD7 DUP7 PC SWAP5 ADDMOD 0xE5 0xEA 0xCA LOG1 DUP12 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "26:804:50:-;;;;;;;;"}}}}, "contracts/exchange/contracts-utils/contracts/src/LibReentrancyGuardRichErrors.sol": {"LibReentrancyGuardRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820551934a03937d6bf8a622968542973371e29ab6e748e7212d558899e6eea813864736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SSTORE NOT CALLVALUE LOG0 CODECOPY CALLDATACOPY 0xD6 0xBF DUP11 PUSH3 0x296854 0x29 PUSH20 0x371E29AB6E748E7212D558899E6EEA813864736F PUSH13 0x63430005100032000000000000 ", "sourceMap": "606:398:51:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820551934a03937d6bf8a622968542973371e29ab6e748e7212d558899e6eea813864736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SSTORE NOT CALLVALUE LOG0 CODECOPY CALLDATACOPY 0xD6 0xBF DUP11 PUSH3 0x296854 0x29 PUSH20 0x371E29AB6E748E7212D558899E6EEA813864736F PUSH13 0x63430005100032000000000000 ", "sourceMap": "606:398:51:-;;;;;;;;"}}}}, "contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol": {"LibRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201bb2f71d58b70fe2dde53bddabccf1f18ed9bfd8f788dc9b5814bc53688f2bad64736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SHL 0xB2 0xF7 SAR PC 0xB7 0xF 0xE2 0xDD 0xE5 EXTCODESIZE 0xDD 0xAB 0xCC CALL CALL DUP15 0xD9 0xBF 0xD8 0xF7 DUP9 0xDC SWAP12 PC EQ 0xBC MSTORE8 PUSH9 0x8F2BAD64736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "606:1077:52:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201bb2f71d58b70fe2dde53bddabccf1f18ed9bfd8f788dc9b5814bc53688f2bad64736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SHL 0xB2 0xF7 SAR PC 0xB7 0xF 0xE2 0xDD 0xE5 EXTCODESIZE 0xDD 0xAB 0xCC CALL CALL DUP15 0xD9 0xBF 0xD8 0xF7 DUP9 0xDC SWAP12 PC EQ 0xBC MSTORE8 PUSH9 0x8F2BAD64736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "606:1077:52:-;;;;;;;;"}}}}, "contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol": {"LibSafeMath": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206473cc3ebcf8cfa55819300d8d2bcc3e4002943ca57481594c6d7959b862258764736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH5 0x73CC3EBCF8 0xCF 0xA5 PC NOT ADDRESS 0xD DUP14 0x2B 0xCC RETURNDATACOPY BLOCKHASH MUL SWAP5 EXTCODECOPY 0xA5 PUSH21 0x81594C6D7959B862258764736F6C63430005100032 ", "sourceMap": "95:1908:53:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206473cc3ebcf8cfa55819300d8d2bcc3e4002943ca57481594c6d7959b862258764736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH5 0x73CC3EBCF8 0xCF 0xA5 PC NOT ADDRESS 0xD DUP14 0x2B 0xCC RETURNDATACOPY BLOCKHASH MUL SWAP5 EXTCODECOPY 0xA5 PUSH21 0x81594C6D7959B862258764736F6C63430005100032 ", "sourceMap": "95:1908:53:-;;;;;;;;"}}}}, "contracts/exchange/contracts-utils/contracts/src/LibSafeMathRichErrors.sol": {"LibSafeMathRichErrors": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820ed83f7429dc9f619026aae9c333b4a014869e84ae5317b11528841fc1198043064736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xED DUP4 0xF7 TIMESTAMP SWAP14 0xC9 0xF6 NOT MUL PUSH11 0xAE9C333B4A014869E84AE5 BALANCE PUSH28 0x11528841FC1198043064736F6C634300051000320000000000000000 ", "sourceMap": "26:1332:54:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820ed83f7429dc9f619026aae9c333b4a014869e84ae5317b11528841fc1198043064736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xED DUP4 0xF7 TIMESTAMP SWAP14 0xC9 0xF6 NOT MUL PUSH11 0xAE9C333B4A014869E84AE5 BALANCE PUSH28 0x11528841FC1198043064736F6C634300051000320000000000000000 ", "sourceMap": "26:1332:54:-;;;;;;;;"}}}}, "contracts/exchange/contracts-utils/contracts/src/Ownable.sol": {"Ownable": {"abi": [{"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "previousOwner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "OwnershipTransferred", "type": "event"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "608060405234801561001057600080fd5b50600080546001600160a01b031916331790556101e8806100326000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461005f575b600080fd5b610043610087565b604080516001600160a01b039092168252519081900360200190f35b6100856004803603602081101561007557600080fd5b50356001600160a01b0316610096565b005b6000546001600160a01b031681565b61009e61010d565b6001600160a01b0381166100c1576100bc6100b761013c565b61015a565b61010a565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b6000546001600160a01b0316331461013a5760005461013a906100b79033906001600160a01b0316610162565b565b604080518082019091526004815263734f6e1f60e11b602082015290565b805160208201fd5b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316631de45ad160e01b1790529291505056fea265627a7a72315820c824217b4fa21a43121b4bd433bd337b1fc0c53ebdcc09a757d162d77184fb1e64736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x1E8 DUP1 PUSH2 0x32 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x85 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x96 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x9E PUSH2 0x10D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC1 JUMPI PUSH2 0xBC PUSH2 0xB7 PUSH2 0x13C JUMP JUMPDEST PUSH2 0x15A JUMP JUMPDEST PUSH2 0x10A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13A JUMPI PUSH1 0x0 SLOAD PUSH2 0x13A SWAP1 PUSH2 0xB7 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x162 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC8 0x24 0x21 PUSH28 0x4FA21A43121B4BD433BD337B1FC0C53EBDCC09A757D162D77184FB1E PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "710:979:55:-;;;854:69;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;898:5:55;:18;;-1:-1:-1;;;;;;898:18:55;906:10;898:18;;;710:979;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461005f575b600080fd5b610043610087565b604080516001600160a01b039092168252519081900360200190f35b6100856004803603602081101561007557600080fd5b50356001600160a01b0316610096565b005b6000546001600160a01b031681565b61009e61010d565b6001600160a01b0381166100c1576100bc6100b761013c565b61015a565b61010a565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b6000546001600160a01b0316331461013a5760005461013a906100b79033906001600160a01b0316610162565b565b604080518082019091526004815263734f6e1f60e11b602082015290565b805160208201fd5b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316631de45ad160e01b1790529291505056fea265627a7a72315820c824217b4fa21a43121b4bd433bd337b1fc0c53ebdcc09a757d162d77184fb1e64736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x85 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x96 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x9E PUSH2 0x10D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC1 JUMPI PUSH2 0xBC PUSH2 0xB7 PUSH2 0x13C JUMP JUMPDEST PUSH2 0x15A JUMP JUMPDEST PUSH2 0x10A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13A JUMPI PUSH1 0x0 SLOAD PUSH2 0x13A SWAP1 PUSH2 0xB7 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x162 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x734F6E1F PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x1DE45AD1 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC8 0x24 0x21 PUSH28 0x4FA21A43121B4BD433BD337B1FC0C53EBDCC09A757D162D77184FB1E PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ", "sourceMap": "710:979:55:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;710:979:55;;;;;;;;;;;;;;;;;;;;;;;;827:20;;;:::i;:::-;;;;-1:-1:-1;;;;;827:20:55;;;;;;;;;;;;;;1097:329;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1097:329:55;-1:-1:-1;;;;;1097:329:55;;:::i;:::-;;827:20;;;-1:-1:-1;;;;;827:20:55;;:::o;1097:329::-;960:22;:20;:22::i;:::-;-1:-1:-1;;;;;1193:22:55;;1189:231;;1231:70;1253:47;:45;:47::i;:::-;1231:21;:70::i;:::-;1189:231;;;1332:5;:16;;-1:-1:-1;;;;;;1332:16:55;-1:-1:-1;;;;;1332:16:55;;;;;;;1367:42;;1332:16;;1388:10;;1367:42;;1332:5;1367:42;1189:231;1097:329;:::o;1432:255::-;1526:5;;-1:-1:-1;;;;;1526:5:55;1512:10;:19;1508:173;;1650:5;;1547:123;;1569:100;;1622:10;;-1:-1:-1;;;;;1650:5:55;1569:35;:100::i;1547:123::-;1432:255::o;669:159:50:-;787:34;;;;;;;;;;;;-1:-1:-1;;;787:34:50;;;;669:159;:::o;1511:170:52:-;1654:9;1648:16;1641:4;1630:9;1626:20;1619:46;387:276:50;546:110;;;-1:-1:-1;;;;;546:110:50;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;546:110:50;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;387:276:50;;;;:::o"}}}}, "contracts/exchange/contracts-utils/contracts/src/ReentrancyGuard.sol": {"ReentrancyGuard": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60806040526000805460ff19169055348015601957600080fd5b50603e8060276000396000f3fe6080604052600080fdfea265627a7a72315820ebed375dabb174a6145128045fad7f18085118930b77e43de36da776cc8471cd64736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH1 0x19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x27 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xEB 0xED CALLDATACOPY 0x5D 0xAB 0xB1 PUSH21 0xA6145128045FAD7F18085118930B77E43DE36DA776 0xCC DUP5 PUSH18 0xCD64736F6C63430005100032000000000000 ", "sourceMap": "682:778:56:-;;;767:5;744:28;;-1:-1:-1;;744:28:56;;;682:778;5:2:-1;;;;30:1;27;20:12;5:2;682:778:56;;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "6080604052600080fdfea265627a7a72315820ebed375dabb174a6145128045fad7f18085118930b77e43de36da776cc8471cd64736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xEB 0xED CALLDATACOPY 0x5D 0xAB 0xB1 PUSH21 0xA6145128045FAD7F18085118930B77E43DE36DA776 0xCC DUP5 PUSH18 0xCD64736F6C63430005100032000000000000 ", "sourceMap": "682:778:56:-;;;;;"}}}}, "contracts/exchange/contracts-utils/contracts/src/Refundable.sol": {"Refundable": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60806040526000805460ff19169055348015601957600080fd5b50603e8060276000396000f3fe6080604052600080fdfea265627a7a72315820a0bc139945298f7cc11056afb831a6d38d76fcafa3269b7e57ffcb3c9532f4bf64736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH1 0x19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x27 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 LOG0 0xBC SGT SWAP10 GASLIMIT 0x29 DUP16 PUSH29 0xC11056AFB831A6D38D76FCAFA3269B7E57FFCB3C9532F4BF64736F6C63 NUMBER STOP SDIV LT STOP ORIGIN ", "sourceMap": "639:1375:57:-;;;767:5:56;744:28;;-1:-1:-1;;744:28:56;;;639:1375:57;5:2:-1;;;;30:1;27;20:12;5:2;639:1375:57;;;;;;;"}, "deployedBytecode": {"linkReferences": {}, "object": "6080604052600080fdfea265627a7a72315820a0bc139945298f7cc11056afb831a6d38d76fcafa3269b7e57ffcb3c9532f4bf64736f6c63430005100032", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 LOG0 0xBC SGT SWAP10 GASLIMIT 0x29 DUP16 PUSH29 0xC11056AFB831A6D38D76FCAFA3269B7E57FFCB3C9532F4BF64736F6C63 NUMBER STOP SDIV LT STOP ORIGIN ", "sourceMap": "639:1375:57:-;;;;;"}}}}, "contracts/exchange/contracts-utils/contracts/src/interfaces/IOwnable.sol": {"IOwnable": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "previousOwner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "OwnershipTransferred", "type": "event"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/IAssetProxy.sol": {"IAssetProxy": {"abi": [{"constant": true, "inputs": [], "name": "getProxyId", "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}], "payable": false, "stateMutability": "pure", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes", "name": "assetData", "type": "bytes"}, {"internalType": "address", "name": "from", "type": "address"}, {"internalType": "address", "name": "to", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "transferFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/IAssetProxyDispatcher.sol": {"IAssetProxyDispatcher": {"abi": [{"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes4", "name": "id", "type": "bytes4"}, {"indexed": false, "internalType": "address", "name": "assetProxy", "type": "address"}], "name": "AssetProxyRegistered", "type": "event"}, {"constant": true, "inputs": [{"internalType": "bytes4", "name": "assetProxyId", "type": "bytes4"}], "name": "getAssetProxy", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "name": "registerAssetProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/IEIP1271Data.sol": {"IEIP1271Data": {"abi": [{"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "bytes32", "name": "orderHash", "type": "bytes32"}], "name": "OrderWithHash", "outputs": [], "payable": false, "stateMutability": "pure", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes32", "name": "transactionHash", "type": "bytes32"}], "name": "ZeroExTransactionWithHash", "outputs": [], "payable": false, "stateMutability": "pure", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/IEIP1271Wallet.sol": {"IEIP1271Wallet": {"abi": [{"constant": true, "inputs": [], "name": "EIP1271_MAGIC_VALUE", "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes", "name": "data", "type": "bytes"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidSignature", "outputs": [{"internalType": "bytes4", "name": "magicValue", "type": "bytes4"}], "payable": false, "stateMutability": "view", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/IExchange.sol": {"IExchange": {"abi": [{"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes4", "name": "id", "type": "bytes4"}, {"indexed": false, "internalType": "address", "name": "assetProxy", "type": "address"}], "name": "AssetProxyRegistered", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}], "name": "Cancel", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "orderSenderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "orderEpoch", "type": "uint256"}], "name": "CancelUpTo", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"indexed": false, "internalType": "address", "name": "takerAddress", "type": "address"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "name": "Fill", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "oldProtocolFeeCollector", "type": "address"}, {"indexed": false, "internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "ProtocolFeeCollectorAddress", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "uint256", "name": "oldProtocolFeeMultiplier", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "ProtocolFeeMultiplier", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "signerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "validatorAddress", "type": "address"}, {"indexed": false, "internalType": "bool", "name": "isApproved", "type": "bool"}], "name": "SignatureValidatorApproval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "bytes32", "name": "transactionHash", "type": "bytes32"}], "name": "TransactionExecution", "type": "event"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}], "name": "batchCancelOrders", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction[]", "name": "transactions", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchExecuteTransactions", "outputs": [{"internalType": "bytes[]", "name": "", "type": "bytes[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrKillOrders", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrders", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "leftOrders", "type": "tuple[]"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "rightOrders", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "leftSignatures", "type": "bytes[]"}, {"internalType": "bytes[]", "name": "rightSignatures", "type": "bytes[]"}], "name": "batchMatchOrders", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "left", "type": "tuple[]"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "right", "type": "tuple[]"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.BatchMatchedFillResults", "name": "batchMatchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "leftOrders", "type": "tuple[]"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "rightOrders", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "leftSignatures", "type": "bytes[]"}, {"internalType": "bytes[]", "name": "rightSignatures", "type": "bytes[]"}], "name": "batchMatchOrdersWithMaximalFill", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "left", "type": "tuple[]"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "right", "type": "tuple[]"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.BatchMatchedFillResults", "name": "batchMatchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "cancelOrder", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "targetOrderEpoch", "type": "uint256"}], "name": "cancelOrdersUpTo", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "executeTransaction", "outputs": [{"internalType": "bytes", "name": "", "type": "bytes"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "fillOrKillOrder", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "fillOrder", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes4", "name": "assetProxyId", "type": "bytes4"}], "name": "getAssetProxy", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "getOrderInfo", "outputs": [{"components": [{"internalType": "enum LibOrder.OrderStatus", "name": "orderStatus", "type": "uint8"}, {"internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256"}], "internalType": "struct LibOrder.OrderInfo", "name": "orderInfo", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidHashSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidOrderSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidTransactionSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "makerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketBuyOrdersFillOrKill", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "makerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketBuyOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketSellOrdersFillOrKill", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketSellOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "leftOrder", "type": "tuple"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "rightOrder", "type": "tuple"}, {"internalType": "bytes", "name": "leftSignature", "type": "bytes"}, {"internalType": "bytes", "name": "rightSignature", "type": "bytes"}], "name": "matchOrders", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "left", "type": "tuple"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "right", "type": "tuple"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.MatchedFillResults", "name": "matchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "leftOrder", "type": "tuple"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "rightOrder", "type": "tuple"}, {"internalType": "bytes", "name": "leftSignature", "type": "bytes"}, {"internalType": "bytes", "name": "rightSignature", "type": "bytes"}], "name": "matchOrdersWithMaximalFill", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "left", "type": "tuple"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "right", "type": "tuple"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.MatchedFillResults", "name": "matchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}], "name": "preSign", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeCollector", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeMultiplier", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "assetProxy", "type": "address"}], "name": "registerAssetProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "setProtocolFeeCollectorAddress", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "setProtocolFeeMultiplier", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "validatorAddress", "type": "address"}, {"internalType": "bool", "name": "approval", "type": "bool"}], "name": "setSignatureValidatorApproval", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes[]", "name": "assetData", "type": "bytes[]"}, {"internalType": "address[]", "name": "fromAddresses", "type": "address[]"}, {"internalType": "address[]", "name": "toAddresses", "type": "address[]"}, {"internalType": "uint256[]", "name": "amounts", "type": "uint256[]"}], "name": "simulateDispatchTransferFromCalls", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/IExchangeCore.sol": {"IExchangeCore": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}], "name": "Cancel", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "orderSenderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "orderEpoch", "type": "uint256"}], "name": "CancelUpTo", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "makerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"indexed": false, "internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"indexed": false, "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}, {"indexed": true, "internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"indexed": false, "internalType": "address", "name": "takerAddress", "type": "address"}, {"indexed": false, "internalType": "address", "name": "senderAddress", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "name": "Fill", "type": "event"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "cancelOrder", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "targetOrderEpoch", "type": "uint256"}], "name": "cancelOrdersUpTo", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "fillOrder", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}], "name": "getOrderInfo", "outputs": [{"components": [{"internalType": "enum LibOrder.OrderStatus", "name": "orderStatus", "type": "uint8"}, {"internalType": "bytes32", "name": "orderHash", "type": "bytes32"}, {"internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256"}], "internalType": "struct LibOrder.OrderInfo", "name": "orderInfo", "type": "tuple"}], "payable": false, "stateMutability": "view", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/IMatchOrders.sol": {"IMatchOrders": {"abi": [{"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "leftOrders", "type": "tuple[]"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "rightOrders", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "leftSignatures", "type": "bytes[]"}, {"internalType": "bytes[]", "name": "rightSignatures", "type": "bytes[]"}], "name": "batchMatchOrders", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "left", "type": "tuple[]"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "right", "type": "tuple[]"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.BatchMatchedFillResults", "name": "batchMatchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "leftOrders", "type": "tuple[]"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "rightOrders", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "leftSignatures", "type": "bytes[]"}, {"internalType": "bytes[]", "name": "rightSignatures", "type": "bytes[]"}], "name": "batchMatchOrdersWithMaximalFill", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "left", "type": "tuple[]"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "right", "type": "tuple[]"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.BatchMatchedFillResults", "name": "batchMatchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "leftOrder", "type": "tuple"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "rightOrder", "type": "tuple"}, {"internalType": "bytes", "name": "leftSignature", "type": "bytes"}, {"internalType": "bytes", "name": "rightSignature", "type": "bytes"}], "name": "matchOrders", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "left", "type": "tuple"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "right", "type": "tuple"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.MatchedFillResults", "name": "matchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "leftOrder", "type": "tuple"}, {"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "rightOrder", "type": "tuple"}, {"internalType": "bytes", "name": "leftSignature", "type": "bytes"}, {"internalType": "bytes", "name": "rightSignature", "type": "bytes"}], "name": "matchOrdersWithMaximalFill", "outputs": [{"components": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "left", "type": "tuple"}, {"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "right", "type": "tuple"}, {"internalType": "uint256", "name": "profitInLeftMakerAsset", "type": "uint256"}, {"internalType": "uint256", "name": "profitInRightMakerAsset", "type": "uint256"}], "internalType": "struct LibFillResults.MatchedFillResults", "name": "matchedFillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/IProtocolFees.sol": {"IProtocolFees": {"abi": [{"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "oldProtocolFeeCollector", "type": "address"}, {"indexed": false, "internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "ProtocolFeeCollectorAddress", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "uint256", "name": "oldProtocolFeeMultiplier", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "ProtocolFeeMultiplier", "type": "event"}, {"constant": true, "inputs": [], "name": "protocolFeeCollector", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "protocolFeeMultiplier", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "updatedProtocolFeeCollector", "type": "address"}], "name": "setProtocolFeeCollectorAddress", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "updatedProtocolFeeMultiplier", "type": "uint256"}], "name": "setProtocolFeeMultiplier", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/ISignatureValidator.sol": {"ISignatureValidator": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "signerAddress", "type": "address"}, {"indexed": true, "internalType": "address", "name": "validatorAddress", "type": "address"}, {"indexed": false, "internalType": "bool", "name": "isApproved", "type": "bool"}], "name": "SignatureValidatorApproval", "type": "event"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidHashSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidOrderSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidTransactionSignature", "outputs": [{"internalType": "bool", "name": "isValid", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}], "name": "preSign", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "validatorAddress", "type": "address"}, {"internalType": "bool", "name": "approval", "type": "bool"}], "name": "setSignatureValidatorApproval", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/ITransactions.sol": {"ITransactions": {"abi": [{"anonymous": false, "inputs": [{"indexed": true, "internalType": "bytes32", "name": "transactionHash", "type": "bytes32"}], "name": "TransactionExecution", "type": "event"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction[]", "name": "transactions", "type": "tuple[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchExecuteTransactions", "outputs": [{"internalType": "bytes[]", "name": "", "type": "bytes[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, {"internalType": "address", "name": "signerAddress", "type": "address"}, {"internalType": "bytes", "name": "data", "type": "bytes"}], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "executeTransaction", "outputs": [{"internalType": "bytes", "name": "", "type": "bytes"}], "payable": true, "stateMutability": "payable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/ITransferSimulator.sol": {"ITransferSimulator": {"abi": [{"constant": false, "inputs": [{"internalType": "bytes[]", "name": "assetData", "type": "bytes[]"}, {"internalType": "address[]", "name": "fromAddresses", "type": "address[]"}, {"internalType": "address[]", "name": "toAddresses", "type": "address[]"}, {"internalType": "uint256[]", "name": "amounts", "type": "uint256[]"}], "name": "simulateDispatchTransferFromCalls", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/IWallet.sol": {"IWallet": {"abi": [{"constant": true, "inputs": [{"internalType": "bytes32", "name": "hash", "type": "bytes32"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "isValidSignature", "outputs": [{"internalType": "bytes4", "name": "magicValue", "type": "bytes4"}], "payable": false, "stateMutability": "view", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/interfaces/IWrapperFunctions.sol": {"IWrapperFunctions": {"abi": [{"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}], "name": "batchCancelOrders", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrKillOrders", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrders", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "batchFillOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults[]", "name": "fillResults", "type": "tuple[]"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "name": "fillOrKillOrder", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "makerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketBuyOrdersFillOrKill", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "makerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketBuyOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketSellOrdersFillOrKill", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "makerAddress", "type": "address"}, {"internalType": "address", "name": "takerAddress", "type": "address"}, {"internalType": "address", "name": "feeRecipientAddress", "type": "address"}, {"internalType": "address", "name": "senderAddress", "type": "address"}, {"internalType": "uint256", "name": "makerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFee", "type": "uint256"}, {"internalType": "uint256", "name": "takerFee", "type": "uint256"}, {"internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256"}, {"internalType": "uint256", "name": "salt", "type": "uint256"}, {"internalType": "bytes", "name": "makerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes"}, {"internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes"}], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]"}, {"internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256"}, {"internalType": "bytes[]", "name": "signatures", "type": "bytes[]"}], "name": "marketSellOrdersNoThrow", "outputs": [{"components": [{"internalType": "uint256", "name": "makerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "takerAssetFilledAmount", "type": "uint256"}, {"internalType": "uint256", "name": "makerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "takerFeePaid", "type": "uint256"}, {"internalType": "uint256", "name": "protocolFeePaid", "type": "uint256"}], "internalType": "struct LibFillResults.FillResults", "name": "fillResults", "type": "tuple"}], "payable": true, "stateMutability": "payable", "type": "function"}], "evm": {"bytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}, "deployedBytecode": {"linkReferences": {}, "object": "", "opcodes": "", "sourceMap": ""}}}}, "contracts/exchange/libs/LibExchangeRichErrorDecoder.sol": {"LibExchangeRichErrorDecoder": {"abi": [], "evm": {"bytecode": {"linkReferences": {}, "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582069763b82c6398da1301f5866b05467b20eca025357c4d651cb167f2dc3a9c0d164736f6c63430005100032", "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH10 0x763B82C6398DA1301F58 PUSH7 0xB05467B20ECA02 MSTORE8 JUMPI 0xC4 0xD6 MLOAD 0xCB AND PUSH32 0x2DC3A9C0D164736F6C6343000510003200000000000000000000000000000000 ", "sourceMap": "807:12348:72:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"}, "deployedBytecode": {"linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582069763b82c6398da1301f5866b05467b20eca025357c4d651cb167f2dc3a9c0d164736f6c63430005100032", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH10 0x763B82C6398DA1301F58 PUSH7 0xB05467B20ECA02 MSTORE8 JUMPI 0xC4 0xD6 MLOAD 0xCB AND PUSH32 0x2DC3A9C0D164736F6C6343000510003200000000000000000000000000000000 ", "sourceMap": "807:12348:72:-;;;;;;;;"}}}}}, "errors": [{"component": "general", "formattedMessage": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "./contracts/exchange/contracts-staking/contracts/src/interfaces/IStaking.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "./contracts/exchange/contracts-staking/contracts/src/interfaces/IStaking.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/interfaces/IMatchOrders.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/interfaces/IMatchOrders.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/interfaces/IExchangeCore.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/interfaces/IExchangeCore.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/interfaces/IWallet.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/interfaces/IWallet.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/interfaces/ISignatureValidator.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/interfaces/ISignatureValidator.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/interfaces/IEIP1271Data.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/interfaces/IEIP1271Data.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/interfaces/ITransactions.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/interfaces/ITransactions.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/MixinTransactions.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/MixinTransactions.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/MixinSignatureValidator.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/MixinSignatureValidator.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/MixinExchangeCore.sol:19:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 636, "file": "contracts/exchange/MixinExchangeCore.sol", "start": 603}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/MixinMatchOrders.sol:19:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 636, "file": "contracts/exchange/MixinMatchOrders.sol", "start": 603}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/interfaces/IWrapperFunctions.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/interfaces/IWrapperFunctions.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/MixinWrapperFunctions.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/MixinWrapperFunctions.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/MixinTransferSimulator.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/MixinTransferSimulator.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/Exchange.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/Exchange.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/contracts-staking/contracts/src/interfaces/IStaking.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/contracts-staking/contracts/src/interfaces/IStaking.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/interfaces/ITransferSimulator.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/interfaces/ITransferSimulator.sol", "start": 604}, "type": "Warning"}, {"component": "general", "formattedMessage": "contracts/exchange/interfaces/IExchange.sol:20:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", "message": "Experimental features are turned on. Do not use experimental features on live deployments.", "severity": "warning", "sourceLocation": {"end": 637, "file": "contracts/exchange/interfaces/IExchange.sol", "start": 604}, "type": "Warning"}], "sources": {"./contracts/exchange/contracts-erc20/contracts/src/interfaces/IERC20Token.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-erc20/contracts/src/interfaces/IERC20Token.sol", "exportedSymbols": {"IERC20Token": [12062]}, "id": 12063, "nodeType": "SourceUnit", "nodes": [{"id": 11995, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:0"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 12062, "linearizedBaseContracts": [12062], "name": "IERC20Token", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": null, "id": 12003, "name": "Transfer", "nodeType": "EventDefinition", "parameters": {"id": 12002, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11997, "indexed": true, "name": "_from", "nodeType": "VariableDeclaration", "scope": 12003, "src": "707:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11996, "name": "address", "nodeType": "ElementaryTypeName", "src": "707:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11999, "indexed": true, "name": "_to", "nodeType": "VariableDeclaration", "scope": 12003, "src": "738:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11998, "name": "address", "nodeType": "ElementaryTypeName", "src": "738:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 12001, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", "scope": 12003, "src": "767:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 12000, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "767:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "697:90:0"}, "src": "683:105:0"}, {"anonymous": false, "documentation": null, "id": 12011, "name": "Approval", "nodeType": "EventDefinition", "parameters": {"id": 12010, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12005, "indexed": true, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 12011, "src": "818:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 12004, "name": "address", "nodeType": "ElementaryTypeName", "src": "818:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 12007, "indexed": true, "name": "_spender", "nodeType": "VariableDeclaration", "scope": 12011, "src": "850:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 12006, "name": "address", "nodeType": "ElementaryTypeName", "src": "850:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 12009, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", "scope": 12011, "src": "884:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 12008, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "884:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "808:96:0"}, "src": "794:111:0"}, {"body": null, "documentation": "@dev send `value` token to `to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return True if transfer was successful", "id": 12020, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "parameters": {"id": 12016, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12013, "name": "_to", "nodeType": "VariableDeclaration", "scope": 12020, "src": "1143:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 12012, "name": "address", "nodeType": "ElementaryTypeName", "src": "1143:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 12015, "name": "_value", "nodeType": "VariableDeclaration", "scope": 12020, "src": "1156:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 12014, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1156:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1142:29:0"}, "returnParameters": {"id": 12019, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12018, "name": "", "nodeType": "VariableDeclaration", "scope": 12020, "src": "1206:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 12017, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1206:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "1205:6:0"}, "scope": 12062, "src": "1125:87:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev send `value` token to `to` from `from` on the condition it is approved by `from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return True if transfer was successful", "id": 12031, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": {"id": 12027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12022, "name": "_from", "nodeType": "VariableDeclaration", "scope": 12031, "src": "1546:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 12021, "name": "address", "nodeType": "ElementaryTypeName", "src": "1546:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 12024, "name": "_to", "nodeType": "VariableDeclaration", "scope": 12031, "src": "1569:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 12023, "name": "address", "nodeType": "ElementaryTypeName", "src": "1569:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 12026, "name": "_value", "nodeType": "VariableDeclaration", "scope": 12031, "src": "1590:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 12025, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1590:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1536:74:0"}, "returnParameters": {"id": 12030, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12029, "name": "", "nodeType": "VariableDeclaration", "scope": 12031, "src": "1645:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 12028, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1645:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "1644:6:0"}, "scope": 12062, "src": "1515:136:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of wei to be approved for transfer\n @return Always true if the call has enough gas to complete execution", "id": 12040, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "parameters": {"id": 12036, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12033, "name": "_spender", "nodeType": "VariableDeclaration", "scope": 12040, "src": "1969:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 12032, "name": "address", "nodeType": "ElementaryTypeName", "src": "1969:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 12035, "name": "_value", "nodeType": "VariableDeclaration", "scope": 12040, "src": "1987:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 12034, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1987:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1968:34:0"}, "returnParameters": {"id": 12039, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12038, "name": "", "nodeType": "VariableDeclaration", "scope": 12040, "src": "2037:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 12037, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2037:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "2036:6:0"}, "scope": 12062, "src": "1952:91:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Query total supply of token\n @return Total supply of token", "id": 12045, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": {"id": 12041, "nodeType": "ParameterList", "parameters": [], "src": "2148:2:0"}, "returnParameters": {"id": 12044, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12043, "name": "", "nodeType": "VariableDeclaration", "scope": 12045, "src": "2198:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 12042, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2198:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2197:9:0"}, "scope": 12062, "src": "2128:79:0", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@param _owner The address from which the balance will be retrieved\n @return Balance of owner", "id": 12052, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": {"id": 12048, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12047, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 12052, "src": "2340:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 12046, "name": "address", "nodeType": "ElementaryTypeName", "src": "2340:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "2339:16:0"}, "returnParameters": {"id": 12051, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12050, "name": "", "nodeType": "VariableDeclaration", "scope": 12052, "src": "2403:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 12049, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2403:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2402:9:0"}, "scope": 12062, "src": "2321:91:0", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", "id": 12061, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "parameters": {"id": 12057, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12054, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 12061, "src": "2639:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 12053, "name": "address", "nodeType": "ElementaryTypeName", "src": "2639:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 12056, "name": "_spender", "nodeType": "VariableDeclaration", "scope": 12061, "src": "2655:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 12055, "name": "address", "nodeType": "ElementaryTypeName", "src": "2655:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "2638:34:0"}, "returnParameters": {"id": 12060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12059, "name": "", "nodeType": "VariableDeclaration", "scope": 12061, "src": "2720:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 12058, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2720:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2719:9:0"}, "scope": 12062, "src": "2620:109:0", "stateMutability": "view", "superFunction": null, "visibility": "external"}], "scope": 12063, "src": "606:2125:0"}], "src": "580:2152:0"}, "id": 0}, "./contracts/exchange/contracts-erc20/contracts/src/interfaces/IEtherToken.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-erc20/contracts/src/interfaces/IEtherToken.sol", "exportedSymbols": {"IEtherToken": [11654]}, "id": 11655, "nodeType": "SourceUnit", "nodes": [{"id": 11642, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:1"}, {"absolutePath": "./contracts/exchange/contracts-erc20/contracts/src/interfaces/IERC20Token.sol", "file": "./IERC20Token.sol", "id": 11643, "nodeType": "ImportDirective", "scope": 11655, "sourceUnit": 12063, "src": "605:27:1", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 11644, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 12062, "src": "663:11:1", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Token_$12062", "typeString": "contract IERC20Token"}}, "id": 11645, "nodeType": "InheritanceSpecifier", "src": "663:11:1"}], "contractDependencies": [12062], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 11654, "linearizedBaseContracts": [11654, 12062], "name": "IEtherToken", "nodeType": "ContractDefinition", "nodes": [{"body": null, "documentation": null, "id": 11648, "implemented": false, "kind": "function", "modifiers": [], "name": "deposit", "nodeType": "FunctionDefinition", "parameters": {"id": 11646, "nodeType": "ParameterList", "parameters": [], "src": "697:2:1"}, "returnParameters": {"id": 11647, "nodeType": "ParameterList", "parameters": [], "src": "730:0:1"}, "scope": 11654, "src": "681:50:1", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": null, "id": 11653, "implemented": false, "kind": "function", "modifiers": [], "name": "withdraw", "nodeType": "FunctionDefinition", "parameters": {"id": 11651, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11650, "name": "amount", "nodeType": "VariableDeclaration", "scope": 11653, "src": "759:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11649, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "759:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "758:16:1"}, "returnParameters": {"id": 11652, "nodeType": "ParameterList", "parameters": [], "src": "789:0:1"}, "scope": 11654, "src": "741:49:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public"}], "scope": 11655, "src": "635:157:1"}], "src": "580:213:1"}, "id": 1}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol", "exportedSymbols": {"LibEIP712ExchangeDomain": [8731]}, "id": 8732, "nodeType": "SourceUnit", "nodes": [{"id": 8690, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:2"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol", "file": "@0x/contracts-utils/contracts/src/LibEIP712.sol", "id": 8691, "nodeType": "ImportDirective", "scope": 8732, "sourceUnit": 11641, "src": "605:57:2", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 8731, "linearizedBaseContracts": [8731], "name": "LibEIP712ExchangeDomain", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 8694, "name": "_EIP712_EXCHANGE_DOMAIN_NAME", "nodeType": "VariableDeclaration", "scope": 8731, "src": "746:69:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory", "typeString": "string"}, "typeName": {"id": 8692, "name": "string", "nodeType": "ElementaryTypeName", "src": "746:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "value": {"argumentTypes": null, "hexValue": "30782050726f746f636f6c", "id": 8693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "802:13:2", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_f0f24618f4c4be1e62e026fb039a20ef96f4495294817d1027ffaa6d1f70e61e", "typeString": "literal_string \"0x Protocol\""}, "value": "0x Protocol"}, "visibility": "internal"}, {"constant": true, "id": 8697, "name": "_EIP712_EXCHANGE_DOMAIN_VERSION", "nodeType": "VariableDeclaration", "scope": 8731, "src": "866:66:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory", "typeString": "string"}, "typeName": {"id": 8695, "name": "string", "nodeType": "ElementaryTypeName", "src": "866:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "value": {"argumentTypes": null, "hexValue": "332e302e30", "id": 8696, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "925:7:2", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_d7a1ce683065975771bedf401ecab037f4f4c62cc51fefdc8b39dd246ff0343a", "typeString": "literal_string \"3.0.0\""}, "value": "3.0.0"}, "visibility": "internal"}, {"constant": false, "id": 8699, "name": "EIP712_EXCHANGE_DOMAIN_HASH", "nodeType": "VariableDeclaration", "scope": 8731, "src": "1066:42:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8698, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1066:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "public"}, {"body": {"id": 8729, "nodeType": "Block", "src": "1467:371:2", "statements": [{"assignments": [8707], "declarations": [{"constant": false, "id": 8707, "name": "verifyingContractAddress", "nodeType": "VariableDeclaration", "scope": 8729, "src": "1477:32:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8706, "name": "address", "nodeType": "ElementaryTypeName", "src": "1477:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 8718, "initialValue": {"argumentTypes": null, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 8712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 8708, "name": "verifyingContractAddressIfExists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8703, "src": "1512:32:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 8710, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1556:1:2", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 8709, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1548:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 8711, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1548:10:2", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "1512:46:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"argumentTypes": null, "id": 8716, "name": "verifyingContractAddressIfExists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8703, "src": "1577:32:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8717, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1512:97:2", "trueExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8714, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12111, "src": "1569:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_LibEIP712ExchangeDomain_$8731", "typeString": "contract LibEIP712ExchangeDomain"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_LibEIP712ExchangeDomain_$8731", "typeString": "contract LibEIP712ExchangeDomain"}], "id": 8713, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1561:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 8715, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1561:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "1477:132:2"}, {"expression": {"argumentTypes": null, "id": 8727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 8719, "name": "EIP712_EXCHANGE_DOMAIN_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8699, "src": "1619:27:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8722, "name": "_EIP712_EXCHANGE_DOMAIN_NAME", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8694, "src": "1689:28:2", "typeDescriptions": {"typeIdentifier": "t_string_memory", "typeString": "string memory"}}, {"argumentTypes": null, "id": 8723, "name": "_EIP712_EXCHANGE_DOMAIN_VERSION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8697, "src": "1731:31:2", "typeDescriptions": {"typeIdentifier": "t_string_memory", "typeString": "string memory"}}, {"argumentTypes": null, "id": 8724, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8701, "src": "1776:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 8725, "name": "verifyingContractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8707, "src": "1797:24:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory", "typeString": "string memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 8720, "name": "LibEIP712", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11640, "src": "1649:9:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibEIP712_$11640_$", "typeString": "type(library LibEIP712)"}}, "id": 8721, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "hashEIP712Domain", "nodeType": "MemberAccess", "referencedDeclaration": 11626, "src": "1649:26:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_address_$returns$_t_bytes32_$", "typeString": "function (string memory,string memory,uint256,address) pure returns (bytes32)"}}, "id": 8726, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1649:182:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "1619:212:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 8728, "nodeType": "ExpressionStatement", "src": "1619:212:2"}]}, "documentation": "@param chainId Chain ID of the network this contract is deployed on.\n @param verifyingContractAddressIfExists Address of the verifying contract (null if the address of this contract)", "id": 8730, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": {"id": 8704, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8701, "name": "chainId", "nodeType": "VariableDeclaration", "scope": 8730, "src": "1376:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1376:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8703, "name": "verifyingContractAddressIfExists", "nodeType": "VariableDeclaration", "scope": 8730, "src": "1401:40:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8702, "name": "address", "nodeType": "ElementaryTypeName", "src": "1401:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1366:81:2"}, "returnParameters": {"id": 8705, "nodeType": "ParameterList", "parameters": [], "src": "1467:0:2"}, "scope": 8731, "src": "1354:484:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public"}], "scope": 8732, "src": "665:1175:2"}], "src": "580:1261:2"}, "id": 2}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "exportedSymbols": {"LibExchangeRichErrors": [9342]}, "id": 9343, "nodeType": "SourceUnit", "nodes": [{"id": 8733, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:3"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "@0x/contracts-utils/contracts/src/LibRichErrors.sol", "id": 8734, "nodeType": "ImportDirective", "scope": 9343, "sourceUnit": 9873, "src": "605:61:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "./LibOrder.sol", "id": 8735, "nodeType": "ImportDirective", "scope": 9343, "sourceUnit": 11029, "src": "667:24:3", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 9342, "linearizedBaseContracts": [9342], "name": "LibExchangeRichErrors", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "LibExchangeRichErrors.AssetProxyDispatchErrorCodes", "id": 8738, "members": [{"id": 8736, "name": "INVALID_ASSET_DATA_LENGTH", "nodeType": "EnumValue", "src": "775:25:3"}, {"id": 8737, "name": "UNKNOWN_ASSET_PROXY", "nodeType": "EnumValue", "src": "810:19:3"}], "name": "AssetProxyDispatchErrorCodes", "nodeType": "EnumDefinition", "src": "731:104:3"}, {"canonicalName": "LibExchangeRichErrors.BatchMatchOrdersErrorCodes", "id": 8743, "members": [{"id": 8739, "name": "ZERO_LEFT_ORDERS", "nodeType": "EnumValue", "src": "883:16:3"}, {"id": 8740, "name": "ZERO_RIGHT_ORDERS", "nodeType": "EnumValue", "src": "909:17:3"}, {"id": 8741, "name": "INVALID_LENGTH_LEFT_SIGNATURES", "nodeType": "EnumValue", "src": "936:30:3"}, {"id": 8742, "name": "INVALID_LENGTH_RIGHT_SIGNATURES", "nodeType": "EnumValue", "src": "976:31:3"}], "name": "BatchMatchOrdersErrorCodes", "nodeType": "EnumDefinition", "src": "841:172:3"}, {"canonicalName": "LibExchangeRichErrors.ExchangeContextErrorCodes", "id": 8747, "members": [{"id": 8744, "name": "INVALID_MAKER", "nodeType": "EnumValue", "src": "1060:13:3"}, {"id": 8745, "name": "INVALID_TAKER", "nodeType": "EnumValue", "src": "1083:13:3"}, {"id": 8746, "name": "INVALID_SENDER", "nodeType": "EnumValue", "src": "1106:14:3"}], "name": "ExchangeContextErrorCodes", "nodeType": "EnumDefinition", "src": "1019:107:3"}, {"canonicalName": "LibExchangeRichErrors.FillErrorCodes", "id": 8752, "members": [{"id": 8748, "name": "INVALID_TAKER_AMOUNT", "nodeType": "EnumValue", "src": "1162:20:3"}, {"id": 8749, "name": "TAKER_OVERPAY", "nodeType": "EnumValue", "src": "1192:13:3"}, {"id": 8750, "name": "OVERFILL", "nodeType": "EnumValue", "src": "1215:8:3"}, {"id": 8751, "name": "INVALID_FILL_PRICE", "nodeType": "EnumValue", "src": "1233:18:3"}], "name": "FillErrorCodes", "nodeType": "EnumDefinition", "src": "1132:125:3"}, {"canonicalName": "LibExchangeRichErrors.SignatureErrorCodes", "id": 8760, "members": [{"id": 8753, "name": "BAD_ORDER_SIGNATURE", "nodeType": "EnumValue", "src": "1298:19:3"}, {"id": 8754, "name": "BAD_TRANSACTION_SIGNATURE", "nodeType": "EnumValue", "src": "1327:25:3"}, {"id": 8755, "name": "INVALID_LENGTH", "nodeType": "EnumValue", "src": "1362:14:3"}, {"id": 8756, "name": "UNSUPPORTED", "nodeType": "EnumValue", "src": "1386:11:3"}, {"id": 8757, "name": "ILLEGAL", "nodeType": "EnumValue", "src": "1407:7:3"}, {"id": 8758, "name": "INAPPROPRIATE_SIGNATURE_TYPE", "nodeType": "EnumValue", "src": "1424:28:3"}, {"id": 8759, "name": "INVALID_SIGNER", "nodeType": "EnumValue", "src": "1462:14:3"}], "name": "SignatureErrorCodes", "nodeType": "EnumDefinition", "src": "1263:219:3"}, {"canonicalName": "LibExchangeRichErrors.TransactionErrorCodes", "id": 8763, "members": [{"id": 8761, "name": "ALREADY_EXECUTED", "nodeType": "EnumValue", "src": "1525:16:3"}, {"id": 8762, "name": "EXPIRED", "nodeType": "EnumValue", "src": "1551:7:3"}], "name": "TransactionErrorCodes", "nodeType": "EnumDefinition", "src": "1488:76:3"}, {"canonicalName": "LibExchangeRichErrors.IncompleteFillErrorCode", "id": 8767, "members": [{"id": 8764, "name": "INCOMPLETE_MARKET_BUY_ORDERS", "nodeType": "EnumValue", "src": "1609:28:3"}, {"id": 8765, "name": "INCOMPLETE_MARKET_SELL_ORDERS", "nodeType": "EnumValue", "src": "1647:29:3"}, {"id": 8766, "name": "INCOMPLETE_FILL_ORDER", "nodeType": "EnumValue", "src": "1686:21:3"}], "name": "IncompleteFillErrorCode", "nodeType": "EnumDefinition", "src": "1570:143:3"}, {"constant": true, "id": 8770, "name": "SIGNATURE_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "1791:70:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8768, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1791:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783765356132333138", "id": 8769, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1851:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_2119836440_by_1", "typeString": "int_const 2119836440"}, "value": "0x7e5a2318"}, "visibility": "internal"}, {"constant": true, "id": 8773, "name": "SIGNATURE_VALIDATOR_NOT_APPROVED_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "1948:93:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8771, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1948:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786131356330643036", "id": 8772, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2031:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_2707164422_by_1", "typeString": "int_const 2707164422"}, "value": "0xa15c0d06"}, "visibility": "internal"}, {"constant": true, "id": 8776, "name": "EIP1271_SIGNATURE_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "2125:78:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8774, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2125:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783562643034323864", "id": 8775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2193:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1540375181_by_1", "typeString": "int_const 1540375181"}, "value": "0x5bd0428d"}, "visibility": "internal"}, {"constant": true, "id": 8779, "name": "SIGNATURE_WALLET_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "2288:77:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8777, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2288:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783162383338386637", "id": 8778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2355:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_461605111_by_1", "typeString": "int_const 461605111"}, "value": "0x1b8388f7"}, "visibility": "internal"}, {"constant": true, "id": 8782, "name": "ORDER_STATUS_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "2432:73:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8780, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2432:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786664623663613864", "id": 8781, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2495:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4256615053_by_1", "typeString": "int_const 4256615053"}, "value": "0xfdb6ca8d"}, "visibility": "internal"}, {"constant": true, "id": 8785, "name": "EXCHANGE_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "2591:85:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8783, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2591:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786535336337366338", "id": 8784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2666:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3845945032_by_1", "typeString": "int_const 3845945032"}, "value": "0xe53c76c8"}, "visibility": "internal"}, {"constant": true, "id": 8788, "name": "FILL_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "2736:65:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8786, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2736:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786539346137656430", "id": 8787, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2791:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3913973456_by_1", "typeString": "int_const 3913973456"}, "value": "0xe94a7ed0"}, "visibility": "internal"}, {"constant": true, "id": 8791, "name": "ORDER_EPOCH_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "2877:72:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8789, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2877:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783461643331323735", "id": 8790, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2939:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1255346805_by_1", "typeString": "int_const 1255346805"}, "value": "0x4ad31275"}, "visibility": "internal"}, {"constant": true, "id": 8794, "name": "ASSET_PROXY_EXISTS_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "3022:79:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8792, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3022:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783131633762373230", "id": 8793, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3091:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_298301216_by_1", "typeString": "int_const 298301216"}, "value": "0x11c7b720"}, "visibility": "internal"}, {"constant": true, "id": 8797, "name": "ASSET_PROXY_DISPATCH_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "3181:81:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8795, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3181:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783438383231396136", "id": 8796, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3252:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1216485798_by_1", "typeString": "int_const 1216485798"}, "value": "0x488219a6"}, "visibility": "internal"}, {"constant": true, "id": 8800, "name": "ASSET_PROXY_TRANSFER_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "3342:81:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8798, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3342:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783436373834373262", "id": 8799, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3413:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1182287659_by_1", "typeString": "int_const 1182287659"}, "value": "0x4678472b"}, "visibility": "internal"}, {"constant": true, "id": 8803, "name": "NEGATIVE_SPREAD_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "3495:76:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8801, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3495:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786236353535643666", "id": 8802, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3561:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3059047791_by_1", "typeString": "int_const 3059047791"}, "value": "0xb6555d6f"}, "visibility": "internal"}, {"constant": true, "id": 8806, "name": "TRANSACTION_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "3638:72:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8804, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3638:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786635393835313834", "id": 8805, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3700:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4120400260_by_1", "typeString": "int_const 4120400260"}, "value": "0xf5985184"}, "visibility": "internal"}, {"constant": true, "id": 8809, "name": "TRANSACTION_EXECUTION_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "3786:82:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8807, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3786:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783230643131663631", "id": 8808, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3858:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_550575969_by_1", "typeString": "int_const 550575969"}, "value": "0x20d11f61"}, "visibility": "internal"}, {"constant": true, "id": 8812, "name": "TRANSACTION_GAS_PRICE_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "3957:82:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8810, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3957:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786132366461633039", "id": 8811, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4029:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_2725096457_by_1", "typeString": "int_const 2725096457"}, "value": "0xa26dac09"}, "visibility": "internal"}, {"constant": true, "id": 8815, "name": "TRANSACTION_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "4122:88:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8813, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4122:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786465633461656466", "id": 8814, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4200:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3737431775_by_1", "typeString": "int_const 3737431775"}, "value": "0xdec4aedf"}, "visibility": "internal"}, {"constant": true, "id": 8818, "name": "INCOMPLETE_FILL_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "4288:76:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8816, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4288:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783138653462313431", "id": 8817, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4354:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_417640769_by_1", "typeString": "int_const 417640769"}, "value": "0x18e4b141"}, "visibility": "internal"}, {"constant": true, "id": 8821, "name": "BATCH_MATCH_ORDERS_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "4428:79:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8819, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4428:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786434303932663466", "id": 8820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4497:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3557371727_by_1", "typeString": "int_const 3557371727"}, "value": "0xd4092f4f"}, "visibility": "internal"}, {"constant": true, "id": 8824, "name": "PAY_PROTOCOL_FEE_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9342, "src": "4601:77:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8822, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4601:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783837636231653735", "id": 8823, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4668:10:3", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_2278235765_by_1", "typeString": "int_const 2278235765"}, "value": "0x87cb1e75"}, "visibility": "internal"}, {"body": {"id": 8831, "nodeType": "Block", "src": "4821:48:3", "statements": [{"expression": {"argumentTypes": null, "id": 8829, "name": "SIGNATURE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8770, "src": "4838:24:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8828, "id": 8830, "nodeType": "Return", "src": "4831:31:3"}]}, "documentation": null, "id": 8832, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8825, "nodeType": "ParameterList", "parameters": [], "src": "4759:2:3"}, "returnParameters": {"id": 8828, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8827, "name": "", "nodeType": "VariableDeclaration", "scope": 8832, "src": "4809:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8826, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4809:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "4808:8:3"}, "scope": 9342, "src": "4728:141:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8839, "nodeType": "Block", "src": "4988:71:3", "statements": [{"expression": {"argumentTypes": null, "id": 8837, "name": "SIGNATURE_VALIDATOR_NOT_APPROVED_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8773, "src": "5005:47:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8836, "id": 8838, "nodeType": "Return", "src": "4998:54:3"}]}, "documentation": null, "id": 8840, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureValidatorNotApprovedErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8833, "nodeType": "ParameterList", "parameters": [], "src": "4926:2:3"}, "returnParameters": {"id": 8836, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8835, "name": "", "nodeType": "VariableDeclaration", "scope": 8840, "src": "4976:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8834, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4976:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "4975:8:3"}, "scope": 9342, "src": "4875:184:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8847, "nodeType": "Block", "src": "5165:56:3", "statements": [{"expression": {"argumentTypes": null, "id": 8845, "name": "EIP1271_SIGNATURE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8776, "src": "5182:32:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8844, "id": 8846, "nodeType": "Return", "src": "5175:39:3"}]}, "documentation": null, "id": 8848, "implemented": true, "kind": "function", "modifiers": [], "name": "EIP1271SignatureErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8841, "nodeType": "ParameterList", "parameters": [], "src": "5103:2:3"}, "returnParameters": {"id": 8844, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8843, "name": "", "nodeType": "VariableDeclaration", "scope": 8848, "src": "5153:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8842, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5153:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5152:8:3"}, "scope": 9342, "src": "5065:156:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8855, "nodeType": "Block", "src": "5326:55:3", "statements": [{"expression": {"argumentTypes": null, "id": 8853, "name": "SIGNATURE_WALLET_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8779, "src": "5343:31:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8852, "id": 8854, "nodeType": "Return", "src": "5336:38:3"}]}, "documentation": null, "id": 8856, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureWalletErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8849, "nodeType": "ParameterList", "parameters": [], "src": "5264:2:3"}, "returnParameters": {"id": 8852, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8851, "name": "", "nodeType": "VariableDeclaration", "scope": 8856, "src": "5314:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8850, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5314:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5313:8:3"}, "scope": 9342, "src": "5227:154:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8863, "nodeType": "Block", "src": "5482:51:3", "statements": [{"expression": {"argumentTypes": null, "id": 8861, "name": "ORDER_STATUS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8782, "src": "5499:27:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8860, "id": 8862, "nodeType": "Return", "src": "5492:34:3"}]}, "documentation": null, "id": 8864, "implemented": true, "kind": "function", "modifiers": [], "name": "OrderStatusErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8857, "nodeType": "ParameterList", "parameters": [], "src": "5420:2:3"}, "returnParameters": {"id": 8860, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8859, "name": "", "nodeType": "VariableDeclaration", "scope": 8864, "src": "5470:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8858, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5470:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5469:8:3"}, "scope": 9342, "src": "5387:146:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8871, "nodeType": "Block", "src": "5645:63:3", "statements": [{"expression": {"argumentTypes": null, "id": 8869, "name": "EXCHANGE_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8785, "src": "5662:39:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8868, "id": 8870, "nodeType": "Return", "src": "5655:46:3"}]}, "documentation": null, "id": 8872, "implemented": true, "kind": "function", "modifiers": [], "name": "ExchangeInvalidContextErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8865, "nodeType": "ParameterList", "parameters": [], "src": "5583:2:3"}, "returnParameters": {"id": 8868, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8867, "name": "", "nodeType": "VariableDeclaration", "scope": 8872, "src": "5633:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8866, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5633:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5632:8:3"}, "scope": 9342, "src": "5539:169:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8879, "nodeType": "Block", "src": "5802:43:3", "statements": [{"expression": {"argumentTypes": null, "id": 8877, "name": "FILL_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8788, "src": "5819:19:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8876, "id": 8878, "nodeType": "Return", "src": "5812:26:3"}]}, "documentation": null, "id": 8880, "implemented": true, "kind": "function", "modifiers": [], "name": "FillErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8873, "nodeType": "ParameterList", "parameters": [], "src": "5740:2:3"}, "returnParameters": {"id": 8876, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8875, "name": "", "nodeType": "VariableDeclaration", "scope": 8880, "src": "5790:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8874, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5790:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5789:8:3"}, "scope": 9342, "src": "5714:131:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8887, "nodeType": "Block", "src": "5945:50:3", "statements": [{"expression": {"argumentTypes": null, "id": 8885, "name": "ORDER_EPOCH_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8791, "src": "5962:26:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8884, "id": 8886, "nodeType": "Return", "src": "5955:33:3"}]}, "documentation": null, "id": 8888, "implemented": true, "kind": "function", "modifiers": [], "name": "OrderEpochErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8881, "nodeType": "ParameterList", "parameters": [], "src": "5883:2:3"}, "returnParameters": {"id": 8884, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8883, "name": "", "nodeType": "VariableDeclaration", "scope": 8888, "src": "5933:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8882, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5933:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5932:8:3"}, "scope": 9342, "src": "5851:144:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8895, "nodeType": "Block", "src": "6101:57:3", "statements": [{"expression": {"argumentTypes": null, "id": 8893, "name": "ASSET_PROXY_EXISTS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8794, "src": "6118:33:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8892, "id": 8894, "nodeType": "Return", "src": "6111:40:3"}]}, "documentation": null, "id": 8896, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyExistsErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8889, "nodeType": "ParameterList", "parameters": [], "src": "6039:2:3"}, "returnParameters": {"id": 8892, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8891, "name": "", "nodeType": "VariableDeclaration", "scope": 8896, "src": "6089:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8890, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6089:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6088:8:3"}, "scope": 9342, "src": "6001:157:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8903, "nodeType": "Block", "src": "6266:59:3", "statements": [{"expression": {"argumentTypes": null, "id": 8901, "name": "ASSET_PROXY_DISPATCH_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8797, "src": "6283:35:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8900, "id": 8902, "nodeType": "Return", "src": "6276:42:3"}]}, "documentation": null, "id": 8904, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyDispatchErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8897, "nodeType": "ParameterList", "parameters": [], "src": "6204:2:3"}, "returnParameters": {"id": 8900, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8899, "name": "", "nodeType": "VariableDeclaration", "scope": 8904, "src": "6254:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8898, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6254:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6253:8:3"}, "scope": 9342, "src": "6164:161:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8911, "nodeType": "Block", "src": "6433:59:3", "statements": [{"expression": {"argumentTypes": null, "id": 8909, "name": "ASSET_PROXY_TRANSFER_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8800, "src": "6450:35:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8908, "id": 8910, "nodeType": "Return", "src": "6443:42:3"}]}, "documentation": null, "id": 8912, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyTransferErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8905, "nodeType": "ParameterList", "parameters": [], "src": "6371:2:3"}, "returnParameters": {"id": 8908, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8907, "name": "", "nodeType": "VariableDeclaration", "scope": 8912, "src": "6421:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8906, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6421:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6420:8:3"}, "scope": 9342, "src": "6331:161:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8919, "nodeType": "Block", "src": "6596:54:3", "statements": [{"expression": {"argumentTypes": null, "id": 8917, "name": "NEGATIVE_SPREAD_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8803, "src": "6613:30:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8916, "id": 8918, "nodeType": "Return", "src": "6606:37:3"}]}, "documentation": null, "id": 8920, "implemented": true, "kind": "function", "modifiers": [], "name": "NegativeSpreadErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8913, "nodeType": "ParameterList", "parameters": [], "src": "6534:2:3"}, "returnParameters": {"id": 8916, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8915, "name": "", "nodeType": "VariableDeclaration", "scope": 8920, "src": "6584:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8914, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6584:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6583:8:3"}, "scope": 9342, "src": "6498:152:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8927, "nodeType": "Block", "src": "6751:50:3", "statements": [{"expression": {"argumentTypes": null, "id": 8925, "name": "TRANSACTION_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8806, "src": "6768:26:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8924, "id": 8926, "nodeType": "Return", "src": "6761:33:3"}]}, "documentation": null, "id": 8928, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8921, "nodeType": "ParameterList", "parameters": [], "src": "6689:2:3"}, "returnParameters": {"id": 8924, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8923, "name": "", "nodeType": "VariableDeclaration", "scope": 8928, "src": "6739:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8922, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6739:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6738:8:3"}, "scope": 9342, "src": "6656:145:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8935, "nodeType": "Block", "src": "6911:60:3", "statements": [{"expression": {"argumentTypes": null, "id": 8933, "name": "TRANSACTION_EXECUTION_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8809, "src": "6928:36:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8932, "id": 8934, "nodeType": "Return", "src": "6921:43:3"}]}, "documentation": null, "id": 8936, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionExecutionErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8929, "nodeType": "ParameterList", "parameters": [], "src": "6849:2:3"}, "returnParameters": {"id": 8932, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8931, "name": "", "nodeType": "VariableDeclaration", "scope": 8936, "src": "6899:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8930, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6899:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6898:8:3"}, "scope": 9342, "src": "6807:164:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8943, "nodeType": "Block", "src": "7075:54:3", "statements": [{"expression": {"argumentTypes": null, "id": 8941, "name": "INCOMPLETE_FILL_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8818, "src": "7092:30:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8940, "id": 8942, "nodeType": "Return", "src": "7085:37:3"}]}, "documentation": null, "id": 8944, "implemented": true, "kind": "function", "modifiers": [], "name": "IncompleteFillErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8937, "nodeType": "ParameterList", "parameters": [], "src": "7013:2:3"}, "returnParameters": {"id": 8940, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8939, "name": "", "nodeType": "VariableDeclaration", "scope": 8944, "src": "7063:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8938, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "7063:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "7062:8:3"}, "scope": 9342, "src": "6977:152:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8951, "nodeType": "Block", "src": "7235:57:3", "statements": [{"expression": {"argumentTypes": null, "id": 8949, "name": "BATCH_MATCH_ORDERS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8821, "src": "7252:33:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8948, "id": 8950, "nodeType": "Return", "src": "7245:40:3"}]}, "documentation": null, "id": 8952, "implemented": true, "kind": "function", "modifiers": [], "name": "BatchMatchOrdersErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8945, "nodeType": "ParameterList", "parameters": [], "src": "7173:2:3"}, "returnParameters": {"id": 8948, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8947, "name": "", "nodeType": "VariableDeclaration", "scope": 8952, "src": "7223:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8946, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "7223:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "7222:8:3"}, "scope": 9342, "src": "7135:157:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8959, "nodeType": "Block", "src": "7401:60:3", "statements": [{"expression": {"argumentTypes": null, "id": 8957, "name": "TRANSACTION_GAS_PRICE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8812, "src": "7418:36:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8956, "id": 8958, "nodeType": "Return", "src": "7411:43:3"}]}, "documentation": null, "id": 8960, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionGasPriceErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8953, "nodeType": "ParameterList", "parameters": [], "src": "7339:2:3"}, "returnParameters": {"id": 8956, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8955, "name": "", "nodeType": "VariableDeclaration", "scope": 8960, "src": "7389:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8954, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "7389:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "7388:8:3"}, "scope": 9342, "src": "7298:163:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8967, "nodeType": "Block", "src": "7576:66:3", "statements": [{"expression": {"argumentTypes": null, "id": 8965, "name": "TRANSACTION_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8815, "src": "7593:42:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8964, "id": 8966, "nodeType": "Return", "src": "7586:49:3"}]}, "documentation": null, "id": 8968, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionInvalidContextErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8961, "nodeType": "ParameterList", "parameters": [], "src": "7514:2:3"}, "returnParameters": {"id": 8964, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8963, "name": "", "nodeType": "VariableDeclaration", "scope": 8968, "src": "7564:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8962, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "7564:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "7563:8:3"}, "scope": 9342, "src": "7467:175:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8975, "nodeType": "Block", "src": "7746:55:3", "statements": [{"expression": {"argumentTypes": null, "id": 8973, "name": "PAY_PROTOCOL_FEE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8824, "src": "7763:31:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 8972, "id": 8974, "nodeType": "Return", "src": "7756:38:3"}]}, "documentation": null, "id": 8976, "implemented": true, "kind": "function", "modifiers": [], "name": "PayProtocolFeeErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 8969, "nodeType": "ParameterList", "parameters": [], "src": "7684:2:3"}, "returnParameters": {"id": 8972, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8971, "name": "", "nodeType": "VariableDeclaration", "scope": 8976, "src": "7734:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8970, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "7734:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "7733:8:3"}, "scope": 9342, "src": "7648:153:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8989, "nodeType": "Block", "src": "7959:126:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8985, "name": "BATCH_MATCH_ORDERS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8821, "src": "8012:33:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 8986, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8978, "src": "8059:9:3", "typeDescriptions": {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}], "expression": {"argumentTypes": null, "id": 8983, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "7976:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8984, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7976:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 8987, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7976:102:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 8982, "id": 8988, "nodeType": "Return", "src": "7969:109:3"}]}, "documentation": null, "id": 8990, "implemented": true, "kind": "function", "modifiers": [], "name": "BatchMatchOrdersError", "nodeType": "FunctionDefinition", "parameters": {"id": 8979, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8978, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 8990, "src": "7851:36:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}, "typeName": {"contractScope": null, "id": 8977, "name": "BatchMatchOrdersErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8743, "src": "7851:26:3", "typeDescriptions": {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}}, "value": null, "visibility": "internal"}], "src": "7841:52:3"}, "returnParameters": {"id": 8982, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8981, "name": "", "nodeType": "VariableDeclaration", "scope": 8990, "src": "7941:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8980, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7941:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "7940:14:3"}, "scope": 9342, "src": "7811:274:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9012, "nodeType": "Block", "src": "8310:185:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9005, "name": "SIGNATURE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8770, "src": "8363:24:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9006, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8992, "src": "8401:9:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 9007, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8994, "src": "8424:4:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 9008, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8996, "src": "8442:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 9009, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8998, "src": "8469:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9003, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "8327:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9004, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8327:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9010, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8327:161:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9002, "id": 9011, "nodeType": "Return", "src": "8320:168:3"}]}, "documentation": null, "id": 9013, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureError", "nodeType": "FunctionDefinition", "parameters": {"id": 8999, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8992, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 9013, "src": "8124:29:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, "typeName": {"contractScope": null, "id": 8991, "name": "SignatureErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8760, "src": "8124:19:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8994, "name": "hash", "nodeType": "VariableDeclaration", "scope": 9013, "src": "8163:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8993, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8163:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8996, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 9013, "src": "8185:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8995, "name": "address", "nodeType": "ElementaryTypeName", "src": "8185:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8998, "name": "signature", "nodeType": "VariableDeclaration", "scope": 9013, "src": "8216:22:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8997, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8216:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8114:130:3"}, "returnParameters": {"id": 9002, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9001, "name": "", "nodeType": "VariableDeclaration", "scope": 9013, "src": "8292:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9000, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8292:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8291:14:3"}, "scope": 9342, "src": "8091:404:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9029, "nodeType": "Block", "src": "8681:174:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9024, "name": "SIGNATURE_VALIDATOR_NOT_APPROVED_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8773, "src": "8734:47:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9025, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9015, "src": "8795:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 9026, "name": "validatorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9017, "src": "8822:16:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 9022, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "8698:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9023, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8698:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9027, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8698:150:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9021, "id": 9028, "nodeType": "Return", "src": "8691:157:3"}]}, "documentation": null, "id": 9030, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureValidatorNotApprovedError", "nodeType": "FunctionDefinition", "parameters": {"id": 9018, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9015, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 9030, "src": "8554:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9014, "name": "address", "nodeType": "ElementaryTypeName", "src": "8554:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9017, "name": "validatorAddress", "nodeType": "VariableDeclaration", "scope": 9030, "src": "8585:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9016, "name": "address", "nodeType": "ElementaryTypeName", "src": "8585:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "8544:71:3"}, "returnParameters": {"id": 9021, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9020, "name": "", "nodeType": "VariableDeclaration", "scope": 9030, "src": "8663:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9019, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8663:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8662:14:3"}, "scope": 9342, "src": "8501:354:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9052, "nodeType": "Block", "src": "9096:204:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9045, "name": "EIP1271_SIGNATURE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8776, "src": "9149:32:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9046, "name": "verifyingContractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9032, "src": "9195:24:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 9047, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9034, "src": "9233:4:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 9048, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9036, "src": "9251:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 9049, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9038, "src": "9274:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9043, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "9113:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9044, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9113:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9050, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9113:180:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9042, "id": 9051, "nodeType": "Return", "src": "9106:187:3"}]}, "documentation": null, "id": 9053, "implemented": true, "kind": "function", "modifiers": [], "name": "EIP1271SignatureError", "nodeType": "FunctionDefinition", "parameters": {"id": 9039, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9032, "name": "verifyingContractAddress", "nodeType": "VariableDeclaration", "scope": 9053, "src": "8901:32:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9031, "name": "address", "nodeType": "ElementaryTypeName", "src": "8901:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9034, "name": "data", "nodeType": "VariableDeclaration", "scope": 9053, "src": "8943:17:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9033, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8943:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9036, "name": "signature", "nodeType": "VariableDeclaration", "scope": 9053, "src": "8970:22:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9035, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8970:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9038, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 9053, "src": "9002:22:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9037, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9002:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8891:139:3"}, "returnParameters": {"id": 9042, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9041, "name": "", "nodeType": "VariableDeclaration", "scope": 9053, "src": "9078:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9040, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9078:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9077:14:3"}, "scope": 9342, "src": "8861:439:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9075, "nodeType": "Block", "src": "9524:192:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9068, "name": "SIGNATURE_WALLET_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8779, "src": "9577:31:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9069, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9055, "src": "9622:4:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 9070, "name": "walletAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9057, "src": "9640:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 9071, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9059, "src": "9667:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 9072, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9061, "src": "9690:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9066, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "9541:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9067, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9541:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9073, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9541:168:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9065, "id": 9074, "nodeType": "Return", "src": "9534:175:3"}]}, "documentation": null, "id": 9076, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureWalletError", "nodeType": "FunctionDefinition", "parameters": {"id": 9062, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9055, "name": "hash", "nodeType": "VariableDeclaration", "scope": 9076, "src": "9345:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9054, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9345:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9057, "name": "walletAddress", "nodeType": "VariableDeclaration", "scope": 9076, "src": "9367:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9056, "name": "address", "nodeType": "ElementaryTypeName", "src": "9367:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9059, "name": "signature", "nodeType": "VariableDeclaration", "scope": 9076, "src": "9398:22:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9058, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9398:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9061, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 9076, "src": "9430:22:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9060, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9430:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9335:123:3"}, "returnParameters": {"id": 9065, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9064, "name": "", "nodeType": "VariableDeclaration", "scope": 9076, "src": "9506:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9063, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9506:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9505:14:3"}, "scope": 9342, "src": "9306:410:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9092, "nodeType": "Block", "src": "9888:145:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9087, "name": "ORDER_STATUS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8782, "src": "9941:27:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9088, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9078, "src": "9982:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 9089, "name": "orderStatus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9080, "src": "10005:11:3", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}], "expression": {"argumentTypes": null, "id": 9085, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "9905:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9086, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9905:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9090, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9905:121:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9084, "id": 9091, "nodeType": "Return", "src": "9898:128:3"}]}, "documentation": null, "id": 9093, "implemented": true, "kind": "function", "modifiers": [], "name": "OrderStatusError", "nodeType": "FunctionDefinition", "parameters": {"id": 9081, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9078, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 9093, "src": "9757:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9077, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9757:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9080, "name": "orderStatus", "nodeType": "VariableDeclaration", "scope": 9093, "src": "9784:32:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}, "typeName": {"contractScope": null, "id": 9079, "name": "LibOrder.OrderStatus", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10934, "src": "9784:20:3", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "value": null, "visibility": "internal"}], "src": "9747:75:3"}, "returnParameters": {"id": 9084, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9083, "name": "", "nodeType": "VariableDeclaration", "scope": 9093, "src": "9870:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9082, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9870:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9869:14:3"}, "scope": 9342, "src": "9722:311:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9112, "nodeType": "Block", "src": "10251:183:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9106, "name": "EXCHANGE_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8785, "src": "10304:39:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9107, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9095, "src": "10357:9:3", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, {"argumentTypes": null, "id": 9108, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9097, "src": "10380:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 9109, "name": "contextAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9099, "src": "10403:14:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 9104, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "10268:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9105, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10268:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9110, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10268:159:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9103, "id": 9111, "nodeType": "Return", "src": "10261:166:3"}]}, "documentation": null, "id": 9113, "implemented": true, "kind": "function", "modifiers": [], "name": "ExchangeInvalidContextError", "nodeType": "FunctionDefinition", "parameters": {"id": 9100, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9095, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 9113, "src": "10085:35:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}, "typeName": {"contractScope": null, "id": 9094, "name": "ExchangeContextErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8747, "src": "10085:25:3", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9097, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 9113, "src": "10130:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9096, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10130:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9099, "name": "contextAddress", "nodeType": "VariableDeclaration", "scope": 9113, "src": "10157:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9098, "name": "address", "nodeType": "ElementaryTypeName", "src": "10157:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "10075:110:3"}, "returnParameters": {"id": 9103, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9102, "name": "", "nodeType": "VariableDeclaration", "scope": 9113, "src": "10233:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9101, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10233:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "10232:14:3"}, "scope": 9342, "src": "10039:395:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9129, "nodeType": "Block", "src": "10591:135:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9124, "name": "FILL_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8788, "src": "10644:19:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9125, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9115, "src": "10677:9:3", "typeDescriptions": {"typeIdentifier": "t_enum$_FillErrorCodes_$8752", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}}, {"argumentTypes": null, "id": 9126, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9117, "src": "10700:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_FillErrorCodes_$8752", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 9122, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "10608:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9123, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10608:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9127, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10608:111:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9121, "id": 9128, "nodeType": "Return", "src": "10601:118:3"}]}, "documentation": null, "id": 9130, "implemented": true, "kind": "function", "modifiers": [], "name": "FillError", "nodeType": "FunctionDefinition", "parameters": {"id": 9118, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9115, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 9130, "src": "10468:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_FillErrorCodes_$8752", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}, "typeName": {"contractScope": null, "id": 9114, "name": "FillErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8752, "src": "10468:14:3", "typeDescriptions": {"typeIdentifier": "t_enum$_FillErrorCodes_$8752", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9117, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 9130, "src": "10502:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9116, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10502:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "10458:67:3"}, "returnParameters": {"id": 9121, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9120, "name": "", "nodeType": "VariableDeclaration", "scope": 9130, "src": "10573:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9119, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10573:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "10572:14:3"}, "scope": 9342, "src": "10440:286:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9149, "nodeType": "Block", "src": "10924:180:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9143, "name": "ORDER_EPOCH_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8791, "src": "10977:26:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9144, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9132, "src": "11017:12:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 9145, "name": "orderSenderAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9134, "src": "11043:18:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 9146, "name": "currentEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9136, "src": "11075:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9141, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "10941:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9142, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10941:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9147, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10941:156:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9140, "id": 9148, "nodeType": "Return", "src": "10934:163:3"}]}, "documentation": null, "id": 9150, "implemented": true, "kind": "function", "modifiers": [], "name": "OrderEpochError", "nodeType": "FunctionDefinition", "parameters": {"id": 9137, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9132, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 9150, "src": "10766:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9131, "name": "address", "nodeType": "ElementaryTypeName", "src": "10766:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9134, "name": "orderSenderAddress", "nodeType": "VariableDeclaration", "scope": 9150, "src": "10796:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9133, "name": "address", "nodeType": "ElementaryTypeName", "src": "10796:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9136, "name": "currentEpoch", "nodeType": "VariableDeclaration", "scope": 9150, "src": "10832:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9135, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10832:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "10756:102:3"}, "returnParameters": {"id": 9140, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9139, "name": "", "nodeType": "VariableDeclaration", "scope": 9150, "src": "10906:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9138, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10906:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "10905:14:3"}, "scope": 9342, "src": "10732:372:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9166, "nodeType": "Block", "src": "11276:160:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9161, "name": "ASSET_PROXY_EXISTS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8794, "src": "11329:33:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9162, "name": "assetProxyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9152, "src": "11376:12:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9163, "name": "assetProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9154, "src": "11402:17:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 9159, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "11293:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9160, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11293:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9164, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11293:136:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9158, "id": 9165, "nodeType": "Return", "src": "11286:143:3"}]}, "documentation": null, "id": 9167, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyExistsError", "nodeType": "FunctionDefinition", "parameters": {"id": 9155, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9152, "name": "assetProxyId", "nodeType": "VariableDeclaration", "scope": 9167, "src": "11150:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 9151, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "11150:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9154, "name": "assetProxyAddress", "nodeType": "VariableDeclaration", "scope": 9167, "src": "11179:25:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9153, "name": "address", "nodeType": "ElementaryTypeName", "src": "11179:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "11140:70:3"}, "returnParameters": {"id": 9158, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9157, "name": "", "nodeType": "VariableDeclaration", "scope": 9167, "src": "11258:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9156, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11258:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "11257:14:3"}, "scope": 9342, "src": "11110:326:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9186, "nodeType": "Block", "src": "11653:174:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9180, "name": "ASSET_PROXY_DISPATCH_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8797, "src": "11706:35:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9181, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9169, "src": "11755:9:3", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}}, {"argumentTypes": null, "id": 9182, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9171, "src": "11778:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 9183, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9173, "src": "11801:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9178, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "11670:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9179, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11670:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9184, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11670:150:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9177, "id": 9185, "nodeType": "Return", "src": "11663:157:3"}]}, "documentation": null, "id": 9187, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyDispatchError", "nodeType": "FunctionDefinition", "parameters": {"id": 9174, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9169, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 9187, "src": "11484:38:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}, "typeName": {"contractScope": null, "id": 9168, "name": "AssetProxyDispatchErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8738, "src": "11484:28:3", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9171, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 9187, "src": "11532:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9170, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11532:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9173, "name": "assetData", "nodeType": "VariableDeclaration", "scope": 9187, "src": "11559:22:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9172, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11559:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "11474:113:3"}, "returnParameters": {"id": 9177, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9176, "name": "", "nodeType": "VariableDeclaration", "scope": 9187, "src": "11635:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9175, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11635:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "11634:14:3"}, "scope": 9342, "src": "11442:385:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9206, "nodeType": "Block", "src": "12028:174:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9200, "name": "ASSET_PROXY_TRANSFER_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8800, "src": "12081:35:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9201, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9189, "src": "12130:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 9202, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9191, "src": "12153:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 9203, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9193, "src": "12176:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9198, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "12045:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9199, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12045:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12045:150:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9197, "id": 9205, "nodeType": "Return", "src": "12038:157:3"}]}, "documentation": null, "id": 9207, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyTransferError", "nodeType": "FunctionDefinition", "parameters": {"id": 9194, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9189, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 9207, "src": "11875:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9188, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11875:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9191, "name": "assetData", "nodeType": "VariableDeclaration", "scope": 9207, "src": "11902:22:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9190, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11902:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9193, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 9207, "src": "11934:22:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9192, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11934:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "11865:97:3"}, "returnParameters": {"id": 9197, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9196, "name": "", "nodeType": "VariableDeclaration", "scope": 9207, "src": "12010:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9195, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12010:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "12009:14:3"}, "scope": 9342, "src": "11833:369:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9223, "nodeType": "Block", "src": "12371:155:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9218, "name": "NEGATIVE_SPREAD_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8803, "src": "12424:30:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9219, "name": "leftOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9209, "src": "12468:13:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 9220, "name": "rightOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9211, "src": "12495:14:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 9216, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "12388:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9217, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12388:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9221, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12388:131:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9215, "id": 9222, "nodeType": "Return", "src": "12381:138:3"}]}, "documentation": null, "id": 9224, "implemented": true, "kind": "function", "modifiers": [], "name": "NegativeSpreadError", "nodeType": "FunctionDefinition", "parameters": {"id": 9212, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9209, "name": "leftOrderHash", "nodeType": "VariableDeclaration", "scope": 9224, "src": "12246:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9208, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12246:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9211, "name": "rightOrderHash", "nodeType": "VariableDeclaration", "scope": 9224, "src": "12277:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9210, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12277:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "12236:69:3"}, "returnParameters": {"id": 9215, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9214, "name": "", "nodeType": "VariableDeclaration", "scope": 9224, "src": "12353:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9213, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12353:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "12352:14:3"}, "scope": 9342, "src": "12208:318:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9240, "nodeType": "Block", "src": "12703:148:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9235, "name": "TRANSACTION_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8806, "src": "12756:26:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9236, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9226, "src": "12796:9:3", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}}, {"argumentTypes": null, "id": 9237, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9228, "src": "12819:15:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 9233, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "12720:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9234, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12720:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9238, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12720:124:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9232, "id": 9239, "nodeType": "Return", "src": "12713:131:3"}]}, "documentation": null, "id": 9241, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionError", "nodeType": "FunctionDefinition", "parameters": {"id": 9229, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9226, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 9241, "src": "12567:31:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}, "typeName": {"contractScope": null, "id": 9225, "name": "TransactionErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8763, "src": "12567:21:3", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9228, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 9241, "src": "12608:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9227, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12608:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "12557:80:3"}, "returnParameters": {"id": 9232, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9231, "name": "", "nodeType": "VariableDeclaration", "scope": 9241, "src": "12685:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9230, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12685:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "12684:14:3"}, "scope": 9342, "src": "12532:319:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9257, "nodeType": "Block", "src": "13028:158:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9252, "name": "TRANSACTION_EXECUTION_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8809, "src": "13081:36:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9253, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9243, "src": "13131:15:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 9254, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9245, "src": "13160:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9250, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "13045:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9251, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13045:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9255, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13045:134:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9249, "id": 9256, "nodeType": "Return", "src": "13038:141:3"}]}, "documentation": null, "id": 9258, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionExecutionError", "nodeType": "FunctionDefinition", "parameters": {"id": 9246, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9243, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 9258, "src": "12901:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9242, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12901:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9245, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 9258, "src": "12934:22:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9244, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12934:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "12891:71:3"}, "returnParameters": {"id": 9249, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9248, "name": "", "nodeType": "VariableDeclaration", "scope": 9258, "src": "13010:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9247, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13010:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "13009:14:3"}, "scope": 9342, "src": "12857:329:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9277, "nodeType": "Block", "src": "13396:193:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9271, "name": "TRANSACTION_GAS_PRICE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8812, "src": "13449:36:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9272, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9260, "src": "13499:15:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 9273, "name": "actualGasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9262, "src": "13528:14:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 9274, "name": "requiredGasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9264, "src": "13556:16:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9269, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "13413:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9270, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13413:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9275, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13413:169:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9268, "id": 9276, "nodeType": "Return", "src": "13406:176:3"}]}, "documentation": null, "id": 9278, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionGasPriceError", "nodeType": "FunctionDefinition", "parameters": {"id": 9265, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9260, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 9278, "src": "13235:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9259, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13235:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9262, "name": "actualGasPrice", "nodeType": "VariableDeclaration", "scope": 9278, "src": "13268:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9261, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13268:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9264, "name": "requiredGasPrice", "nodeType": "VariableDeclaration", "scope": 9278, "src": "13300:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9263, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13300:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "13225:105:3"}, "returnParameters": {"id": 9268, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9267, "name": "", "nodeType": "VariableDeclaration", "scope": 9278, "src": "13378:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9266, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13378:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "13377:14:3"}, "scope": 9342, "src": "13192:397:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9294, "nodeType": "Block", "src": "13778:176:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9289, "name": "TRANSACTION_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8815, "src": "13831:42:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9290, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9280, "src": "13887:15:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 9291, "name": "currentContextAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9282, "src": "13916:21:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 9287, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "13795:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9288, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13795:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9292, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13795:152:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9286, "id": 9293, "nodeType": "Return", "src": "13788:159:3"}]}, "documentation": null, "id": 9295, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionInvalidContextError", "nodeType": "FunctionDefinition", "parameters": {"id": 9283, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9280, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 9295, "src": "13644:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9279, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13644:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9282, "name": "currentContextAddress", "nodeType": "VariableDeclaration", "scope": 9295, "src": "13677:29:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9281, "name": "address", "nodeType": "ElementaryTypeName", "src": "13677:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "13634:78:3"}, "returnParameters": {"id": 9286, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9285, "name": "", "nodeType": "VariableDeclaration", "scope": 9295, "src": "13760:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9284, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13760:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "13759:14:3"}, "scope": 9342, "src": "13595:359:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9314, "nodeType": "Block", "src": "14183:195:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9308, "name": "INCOMPLETE_FILL_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8818, "src": "14236:30:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9309, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9297, "src": "14280:9:3", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}}, {"argumentTypes": null, "id": 9310, "name": "expectedAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9299, "src": "14303:23:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 9311, "name": "actualAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9301, "src": "14340:21:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9306, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "14200:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9307, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14200:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9312, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14200:171:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9305, "id": 9313, "nodeType": "Return", "src": "14193:178:3"}]}, "documentation": null, "id": 9315, "implemented": true, "kind": "function", "modifiers": [], "name": "IncompleteFillError", "nodeType": "FunctionDefinition", "parameters": {"id": 9302, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9297, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 9315, "src": "13998:33:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}, "typeName": {"contractScope": null, "id": 9296, "name": "IncompleteFillErrorCode", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8767, "src": "13998:23:3", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9299, "name": "expectedAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 9315, "src": "14041:31:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9298, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14041:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9301, "name": "actualAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 9315, "src": "14082:29:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9300, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14082:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "13988:129:3"}, "returnParameters": {"id": 9305, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9304, "name": "", "nodeType": "VariableDeclaration", "scope": 9315, "src": "14165:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9303, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "14165:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "14164:14:3"}, "scope": 9342, "src": "13960:418:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9340, "nodeType": "Block", "src": "14632:224:3", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9332, "name": "PAY_PROTOCOL_FEE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8824, "src": "14685:31:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 9333, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9317, "src": "14730:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 9334, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9319, "src": "14753:11:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 9335, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9321, "src": "14778:12:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 9336, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9323, "src": "14804:12:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 9337, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9325, "src": "14830:9:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9330, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "14649:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9331, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14649:22:3", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9338, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14649:200:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9329, "id": 9339, "nodeType": "Return", "src": "14642:207:3"}]}, "documentation": null, "id": 9341, "implemented": true, "kind": "function", "modifiers": [], "name": "PayProtocolFeeError", "nodeType": "FunctionDefinition", "parameters": {"id": 9326, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9317, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 9341, "src": "14422:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9316, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "14422:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9319, "name": "protocolFee", "nodeType": "VariableDeclaration", "scope": 9341, "src": "14449:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9318, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14449:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9321, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 9341, "src": "14478:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9320, "name": "address", "nodeType": "ElementaryTypeName", "src": "14478:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9323, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 9341, "src": "14508:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9322, "name": "address", "nodeType": "ElementaryTypeName", "src": "14508:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9325, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 9341, "src": "14538:22:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9324, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "14538:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "14412:154:3"}, "returnParameters": {"id": 9329, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9328, "name": "", "nodeType": "VariableDeclaration", "scope": 9341, "src": "14614:12:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9327, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "14614:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "14613:14:3"}, "scope": 9342, "src": "14384:472:3", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 9343, "src": "694:14164:3"}], "src": "580:14279:3"}, "id": 3}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol", "exportedSymbols": {"LibFillResults": [10639]}, "id": 10640, "nodeType": "SourceUnit", "nodes": [{"id": 9955, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:4"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol", "file": "@0x/contracts-utils/contracts/src/LibSafeMath.sol", "id": 9956, "nodeType": "ImportDirective", "scope": 10640, "sourceUnit": 11217, "src": "605:59:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibMath.sol", "file": "./LibMath.sol", "id": 9957, "nodeType": "ImportDirective", "scope": 10640, "sourceUnit": 10918, "src": "665:23:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "./LibOrder.sol", "id": 9958, "nodeType": "ImportDirective", "scope": 10640, "sourceUnit": 11029, "src": "689:24:4", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 10639, "linearizedBaseContracts": [10639], "name": "LibFillResults", "nodeType": "ContractDefinition", "nodes": [{"id": 9961, "libraryName": {"contractScope": null, "id": 9959, "name": "LibSafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11216, "src": "752:11:4", "typeDescriptions": {"typeIdentifier": "t_contract$_LibSafeMath_$11216", "typeString": "library LibSafeMath"}}, "nodeType": "UsingForDirective", "src": "746:30:4", "typeName": {"id": 9960, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "768:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"canonicalName": "LibFillResults.BatchMatchedFillResults", "id": 9972, "members": [{"constant": false, "id": 9964, "name": "left", "nodeType": "VariableDeclaration", "scope": 9972, "src": "823:18:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}, "typeName": {"baseType": {"contractScope": null, "id": 9962, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "823:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 9963, "length": null, "nodeType": "ArrayTypeName", "src": "823:13:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9967, "name": "right", "nodeType": "VariableDeclaration", "scope": 9972, "src": "896:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}, "typeName": {"baseType": {"contractScope": null, "id": 9965, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "896:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 9966, "length": null, "nodeType": "ArrayTypeName", "src": "896:13:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9969, "name": "profitInLeftMakerAsset", "nodeType": "VariableDeclaration", "scope": 9972, "src": "970:30:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9968, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "970:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9971, "name": "profitInRightMakerAsset", "nodeType": "VariableDeclaration", "scope": 9972, "src": "1044:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9970, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1044:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "BatchMatchedFillResults", "nodeType": "StructDefinition", "scope": 10639, "src": "782:334:4", "visibility": "public"}, {"canonicalName": "LibFillResults.FillResults", "id": 9983, "members": [{"constant": false, "id": 9974, "name": "makerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 9983, "src": "1151:30:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9973, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1151:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9976, "name": "takerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 9983, "src": "1233:30:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9975, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1233:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9978, "name": "makerFeePaid", "nodeType": "VariableDeclaration", "scope": 9983, "src": "1315:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9977, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1315:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9980, "name": "takerFeePaid", "nodeType": "VariableDeclaration", "scope": 9983, "src": "1417:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9979, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1417:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9982, "name": "protocolFeePaid", "nodeType": "VariableDeclaration", "scope": 9983, "src": "1517:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9981, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1517:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "FillResults", "nodeType": "StructDefinition", "scope": 10639, "src": "1122:496:4", "visibility": "public"}, {"canonicalName": "LibFillResults.MatchedFillResults", "id": 9992, "members": [{"constant": false, "id": 9985, "name": "left", "nodeType": "VariableDeclaration", "scope": 9992, "src": "1660:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 9984, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "1660:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9987, "name": "right", "nodeType": "VariableDeclaration", "scope": 9992, "src": "1748:17:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 9986, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "1748:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9989, "name": "profitInLeftMakerAsset", "nodeType": "VariableDeclaration", "scope": 9992, "src": "1837:30:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9988, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1837:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9991, "name": "profitInRightMakerAsset", "nodeType": "VariableDeclaration", "scope": 9992, "src": "1914:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9990, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1914:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "MatchedFillResults", "nodeType": "StructDefinition", "scope": 10639, "src": "1624:365:4", "visibility": "public"}, {"body": {"id": 10061, "nodeType": "Block", "src": "2766:867:4", "statements": [{"expression": {"argumentTypes": null, "id": 10009, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10005, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10003, "src": "2825:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10007, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "2825:34:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10008, "name": "takerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9996, "src": "2862:22:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2825:59:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10010, "nodeType": "ExpressionStatement", "src": "2825:59:4"}, {"expression": {"argumentTypes": null, "id": 10022, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10011, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10003, "src": "2894:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10013, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "2894:34:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10016, "name": "takerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9996, "src": "2978:22:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10017, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9994, "src": "3014:5:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10018, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "3014:22:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10019, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9994, "src": "3050:5:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10020, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "3050:22:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10014, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "2931:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 10689, "src": "2931:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10021, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2931:151:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2894:188:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10023, "nodeType": "ExpressionStatement", "src": "2894:188:4"}, {"expression": {"argumentTypes": null, "id": 10035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10024, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10003, "src": "3092:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10026, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9978, "src": "3092:24:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10029, "name": "takerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9996, "src": "3166:22:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10030, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9994, "src": "3202:5:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10031, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "3202:22:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10032, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9994, "src": "3238:5:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10033, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFee", "nodeType": "MemberAccess", "referencedDeclaration": 10948, "src": "3238:14:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10027, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "3119:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10028, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 10689, "src": "3119:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10034, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3119:143:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3092:170:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10036, "nodeType": "ExpressionStatement", "src": "3092:170:4"}, {"expression": {"argumentTypes": null, "id": 10048, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10037, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10003, "src": "3272:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10039, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "3272:24:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10042, "name": "takerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9996, "src": "3346:22:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10043, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9994, "src": "3382:5:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10044, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "3382:22:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10045, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9994, "src": "3418:5:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10046, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFee", "nodeType": "MemberAccess", "referencedDeclaration": 10950, "src": "3418:14:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10040, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "3299:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 10689, "src": "3299:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10047, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3299:143:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3272:170:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10049, "nodeType": "ExpressionStatement", "src": "3272:170:4"}, {"expression": {"argumentTypes": null, "id": 10057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10050, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10003, "src": "3528:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10052, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "3528:27:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10055, "name": "protocolFeeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9998, "src": "3575:21:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10053, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10000, "src": "3558:8:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10054, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "3558:16:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10056, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3558:39:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3528:69:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10058, "nodeType": "ExpressionStatement", "src": "3528:69:4"}, {"expression": {"argumentTypes": null, "id": 10059, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10003, "src": "3615:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "functionReturnParameters": 10004, "id": 10060, "nodeType": "Return", "src": "3608:18:4"}]}, "documentation": "@dev Calculates amounts filled and fees paid by maker and taker.\n @param order to be filled.\n @param takerAssetFilledAmount Amount of takerAsset that will be filled.\n @param protocolFeeMultiplier The current protocol fee of the exchange contract.\n @param gasPrice The gasprice of the transaction. This is provided so that the function call can continue\n to be pure rather than view.\n @return fillResults Amounts filled and fees paid by maker and taker.", "id": 10062, "implemented": true, "kind": "function", "modifiers": [], "name": "calculateFillResults", "nodeType": "FunctionDefinition", "parameters": {"id": 10001, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9994, "name": "order", "nodeType": "VariableDeclaration", "scope": 10062, "src": "2544:27:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 9993, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "2544:14:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9996, "name": "takerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 10062, "src": "2581:30:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9995, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2581:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9998, "name": "protocolFeeMultiplier", "nodeType": "VariableDeclaration", "scope": 10062, "src": "2621:29:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9997, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2621:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10000, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 10062, "src": "2660:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9999, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2660:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2534:148:4"}, "returnParameters": {"id": 10004, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10003, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 10062, "src": "2730:30:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 10002, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "2730:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "2729:32:4"}, "scope": 10639, "src": "2505:1128:4", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 10238, "nodeType": "Block", "src": "5231:3035:4", "statements": [{"assignments": [10082], "declarations": [{"constant": false, "id": 10082, "name": "leftTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10238, "src": "5337:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10081, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5337:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 10088, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10086, "name": "leftOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10068, "src": "5412:31:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10083, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10064, "src": "5377:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10084, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "5377:26:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "5377:34:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10087, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5377:67:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5337:107:4"}, {"assignments": [10090], "declarations": [{"constant": false, "id": 10090, "name": "leftMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10238, "src": "5454:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10089, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5454:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 10099, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10093, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10064, "src": "5541:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10094, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "5541:26:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10095, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10064, "src": "5581:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10096, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "5581:26:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10097, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10082, "src": "5621:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10091, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "5494:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 10689, "src": "5494:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10098, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5494:166:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5454:206:4"}, {"assignments": [10101], "declarations": [{"constant": false, "id": 10101, "name": "rightTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10238, "src": "5670:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10100, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5670:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 10107, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10105, "name": "rightOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10070, "src": "5747:32:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10102, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10066, "src": "5711:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10103, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "5711:27:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10104, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "5711:35:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5711:69:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5670:110:4"}, {"assignments": [10109], "declarations": [{"constant": false, "id": 10109, "name": "rightMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10238, "src": "5790:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10108, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5790:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 10118, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10112, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10066, "src": "5878:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10113, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "5878:27:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10114, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10066, "src": "5919:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10115, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "5919:27:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10116, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10101, "src": "5960:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10110, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "5831:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 10689, "src": "5831:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10117, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5831:169:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5790:210:4"}, {"condition": {"argumentTypes": null, "id": 10119, "name": "shouldMaximallyFillOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10076, "src": "6123:25:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 10143, "nodeType": "Block", "src": "6504:333:4", "statements": [{"expression": {"argumentTypes": null, "id": 10141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10132, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "6518:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10134, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10064, "src": "6585:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 10135, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10066, "src": "6612:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 10136, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10090, "src": "6640:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10137, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10082, "src": "6687:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10138, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10109, "src": "6734:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10139, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10101, "src": "6782:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 10133, "name": "_calculateMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10406, "src": "6539:28:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$9992_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.Order memory,uint256,uint256,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 10140, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6539:287:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "6518:308:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10142, "nodeType": "ExpressionStatement", "src": "6518:308:4"}]}, "id": 10144, "nodeType": "IfStatement", "src": "6119:718:4", "trueBody": {"id": 10131, "nodeType": "Block", "src": "6150:348:4", "statements": [{"expression": {"argumentTypes": null, "id": 10129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10120, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "6164:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10122, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10064, "src": "6246:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 10123, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10066, "src": "6273:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 10124, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10090, "src": "6301:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10125, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10082, "src": "6348:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10126, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10109, "src": "6395:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10127, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10101, "src": "6443:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 10121, "name": "_calculateMatchedFillResultsWithMaximalFill", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10537, "src": "6185:43:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$9992_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.Order memory,uint256,uint256,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 10128, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6185:302:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "6164:323:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10130, "nodeType": "ExpressionStatement", "src": "6164:323:4"}]}}, {"expression": {"argumentTypes": null, "id": 10160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10145, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "6886:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10148, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "6886:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10149, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9978, "src": "6886:36:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10152, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "6972:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10153, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "6972:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10154, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "6972:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10155, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10064, "src": "7032:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10156, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "7032:26:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10157, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10064, "src": "7072:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10158, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFee", "nodeType": "MemberAccess", "referencedDeclaration": 10948, "src": "7072:18:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10150, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "6925:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 10689, "src": "6925:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10159, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6925:175:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6886:214:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10161, "nodeType": "ExpressionStatement", "src": "6886:214:4"}, {"expression": {"argumentTypes": null, "id": 10177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10162, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "7110:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10165, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "7110:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10166, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "7110:36:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10169, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "7196:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10170, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "7196:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10171, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "7196:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10172, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10064, "src": "7256:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10173, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "7256:26:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10174, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10064, "src": "7296:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10175, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFee", "nodeType": "MemberAccess", "referencedDeclaration": 10950, "src": "7296:18:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10167, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "7149:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10168, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 10689, "src": "7149:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7149:175:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7110:214:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10178, "nodeType": "ExpressionStatement", "src": "7110:214:4"}, {"expression": {"argumentTypes": null, "id": 10194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10179, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "7375:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10182, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "7375:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10183, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9978, "src": "7375:37:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10186, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "7462:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10187, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "7462:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10188, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "7462:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10189, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10066, "src": "7523:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10190, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "7523:27:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10191, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10066, "src": "7564:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10192, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFee", "nodeType": "MemberAccess", "referencedDeclaration": 10948, "src": "7564:19:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10184, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "7415:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10185, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 10689, "src": "7415:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10193, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7415:178:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7375:218:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10195, "nodeType": "ExpressionStatement", "src": "7375:218:4"}, {"expression": {"argumentTypes": null, "id": 10211, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10196, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "7603:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10199, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "7603:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10200, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "7603:37:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10203, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "7690:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10204, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "7690:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10205, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "7690:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10206, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10066, "src": "7751:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10207, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "7751:27:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10208, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10066, "src": "7792:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10209, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFee", "nodeType": "MemberAccess", "referencedDeclaration": 10950, "src": "7792:19:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10201, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "7643:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 10689, "src": "7643:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10210, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7643:178:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7603:218:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10212, "nodeType": "ExpressionStatement", "src": "7603:218:4"}, {"assignments": [10214], "declarations": [{"constant": false, "id": 10214, "name": "protocolFee", "nodeType": "VariableDeclaration", "scope": 10238, "src": "8004:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10213, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8004:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 10219, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10217, "name": "protocolFeeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10072, "src": "8043:21:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10215, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10074, "src": "8026:8:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "8026:16:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10218, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8026:39:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "8004:61:4"}, {"expression": {"argumentTypes": null, "id": 10226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10220, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "8075:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10223, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "8075:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10224, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "8075:39:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10225, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10214, "src": "8117:11:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8075:53:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10227, "nodeType": "ExpressionStatement", "src": "8075:53:4"}, {"expression": {"argumentTypes": null, "id": 10234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10228, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "8138:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10231, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "8138:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10232, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "8138:40:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10233, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10214, "src": "8181:11:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8138:54:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10235, "nodeType": "ExpressionStatement", "src": "8138:54:4"}, {"expression": {"argumentTypes": null, "id": 10236, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10079, "src": "8241:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 10080, "id": 10237, "nodeType": "Return", "src": "8234:25:4"}]}, "documentation": "@dev Calculates fill amounts for the matched orders.\n Each order is filled at their respective price point. However, the calculations are\n carried out as though the orders are both being filled at the right order's price point.\n The profit made by the leftOrder order goes to the taker (who matched the two orders).\n @param leftOrder First order to match.\n @param rightOrder Second order to match.\n @param leftOrderTakerAssetFilledAmount Amount of left order already filled.\n @param rightOrderTakerAssetFilledAmount Amount of right order already filled.\n @param protocolFeeMultiplier The current protocol fee of the exchange contract.\n @param gasPrice The gasprice of the transaction. This is provided so that the function call can continue\n to be pure rather than view.\n @param shouldMaximallyFillOrders A value that indicates whether or not this calculation should use\n the maximal fill order matching strategy.\n @param matchedFillResults Amounts to fill and fees to pay by maker and taker of matched orders.", "id": 10239, "implemented": true, "kind": "function", "modifiers": [], "name": "calculateMatchedFillResults", "nodeType": "FunctionDefinition", "parameters": {"id": 10077, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10064, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 10239, "src": "4850:31:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 10063, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4850:14:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10066, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 10239, "src": "4891:32:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 10065, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4891:14:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10068, "name": "leftOrderTakerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 10239, "src": "4933:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10067, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4933:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10070, "name": "rightOrderTakerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 10239, "src": "4982:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10069, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4982:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10072, "name": "protocolFeeMultiplier", "nodeType": "VariableDeclaration", "scope": 10239, "src": "5032:29:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10071, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5032:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10074, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 10239, "src": "5071:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10073, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5071:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10076, "name": "shouldMaximallyFillOrders", "nodeType": "VariableDeclaration", "scope": 10239, "src": "5097:30:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 10075, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5097:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "4840:293:4"}, "returnParameters": {"id": 10080, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10079, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 10239, "src": "5181:44:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 10078, "name": "MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "5181:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "5180:46:4"}, "scope": 10639, "src": "4804:3462:4", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 10305, "nodeType": "Block", "src": "8681:620:4", "statements": [{"expression": {"argumentTypes": null, "id": 10257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10248, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10246, "src": "8691:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10250, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "8691:39:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10254, "name": "fillResults2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10243, "src": "8777:12:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10255, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "8777:35:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10251, "name": "fillResults1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10241, "src": "8733:12:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10252, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "8733:35:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "8733:43:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8733:80:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8691:122:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10258, "nodeType": "ExpressionStatement", "src": "8691:122:4"}, {"expression": {"argumentTypes": null, "id": 10268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10259, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10246, "src": "8823:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10261, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "8823:39:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10265, "name": "fillResults2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10243, "src": "8909:12:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10266, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "8909:35:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10262, "name": "fillResults1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10241, "src": "8865:12:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10263, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "8865:35:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "8865:43:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8865:80:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8823:122:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10269, "nodeType": "ExpressionStatement", "src": "8823:122:4"}, {"expression": {"argumentTypes": null, "id": 10279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10270, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10246, "src": "8955:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10272, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9978, "src": "8955:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10276, "name": "fillResults2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10243, "src": "9021:12:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10277, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9978, "src": "9021:25:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10273, "name": "fillResults1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10241, "src": "8987:12:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10274, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9978, "src": "8987:25:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "8987:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10278, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8987:60:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8955:92:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10280, "nodeType": "ExpressionStatement", "src": "8955:92:4"}, {"expression": {"argumentTypes": null, "id": 10290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10281, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10246, "src": "9057:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10283, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "9057:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10287, "name": "fillResults2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10243, "src": "9123:12:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10288, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "9123:25:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10284, "name": "fillResults1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10241, "src": "9089:12:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10285, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "9089:25:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "9089:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10289, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9089:60:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9057:92:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10291, "nodeType": "ExpressionStatement", "src": "9057:92:4"}, {"expression": {"argumentTypes": null, "id": 10301, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10292, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10246, "src": "9159:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10294, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "9159:32:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10298, "name": "fillResults2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10243, "src": "9231:12:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10299, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "9231:28:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10295, "name": "fillResults1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10241, "src": "9194:12:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10296, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "9194:28:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "9194:36:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10300, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9194:66:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9159:101:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10302, "nodeType": "ExpressionStatement", "src": "9159:101:4"}, {"expression": {"argumentTypes": null, "id": 10303, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10246, "src": "9278:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "functionReturnParameters": 10247, "id": 10304, "nodeType": "Return", "src": "9271:23:4"}]}, "documentation": "@dev Adds properties of both FillResults instances.\n @param fillResults1 The first FillResults.\n @param fillResults2 The second FillResults.\n @return The sum of both fill results.", "id": 10306, "implemented": true, "kind": "function", "modifiers": [], "name": "addFillResults", "nodeType": "FunctionDefinition", "parameters": {"id": 10244, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10241, "name": "fillResults1", "nodeType": "VariableDeclaration", "scope": 10306, "src": "8514:31:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 10240, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "8514:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10243, "name": "fillResults2", "nodeType": "VariableDeclaration", "scope": 10306, "src": "8555:31:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 10242, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "8555:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "8504:88:4"}, "returnParameters": {"id": 10247, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10246, "name": "totalFillResults", "nodeType": "VariableDeclaration", "scope": 10306, "src": "8640:35:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 10245, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "8640:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "8639:37:4"}, "scope": 10639, "src": "8481:820:4", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 10405, "nodeType": "Block", "src": "10570:2950:4", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10323, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10314, "src": "11465:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 10324, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10316, "src": "11497:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11465:62:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10335, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10314, "src": "11800:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "id": 10336, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10316, "src": "11832:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11800:62:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 10387, "nodeType": "Block", "src": "12690:565:4", "statements": [{"expression": {"argumentTypes": null, "id": 10385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10378, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10321, "src": "12993:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10380, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10312, "src": "13058:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10381, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10314, "src": "13105:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10382, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10316, "src": "13152:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10383, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10318, "src": "13200:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 10379, "name": "_calculateCompleteFillBoth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10585, "src": "13014:26:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$9992_memory_ptr_$", "typeString": "function (uint256,uint256,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 10384, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13014:230:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "12993:251:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10386, "nodeType": "ExpressionStatement", "src": "12993:251:4"}]}, "id": 10388, "nodeType": "IfStatement", "src": "11796:1459:4", "trueBody": {"id": 10377, "nodeType": "Block", "src": "11864:820:4", "statements": [{"expression": {"argumentTypes": null, "id": 10344, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10338, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10321, "src": "11928:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "11928:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10342, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "11928:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10343, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10312, "src": "11977:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11928:78:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10345, "nodeType": "ExpressionStatement", "src": "11928:78:4"}, {"expression": {"argumentTypes": null, "id": 10352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10346, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10321, "src": "12020:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10349, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "12020:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10350, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "12020:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10351, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10314, "src": "12069:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12020:78:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10353, "nodeType": "ExpressionStatement", "src": "12020:78:4"}, {"expression": {"argumentTypes": null, "id": 10360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10354, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10321, "src": "12112:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10357, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "12112:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10358, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "12112:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10359, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10314, "src": "12162:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12112:79:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10361, "nodeType": "ExpressionStatement", "src": "12112:79:4"}, {"expression": {"argumentTypes": null, "id": 10375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10362, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10321, "src": "12389:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10365, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "12389:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10366, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "12389:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10369, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10310, "src": "12489:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10370, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "12489:27:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10371, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10310, "src": "12534:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10372, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "12534:27:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10373, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10314, "src": "12579:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10367, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "12439:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10368, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountCeil", "nodeType": "MemberAccess", "referencedDeclaration": 10737, "src": "12439:32:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10374, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12439:234:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12389:284:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10376, "nodeType": "ExpressionStatement", "src": "12389:284:4"}]}}, "id": 10389, "nodeType": "IfStatement", "src": "11461:1794:4", "trueBody": {"id": 10334, "nodeType": "Block", "src": "11529:261:4", "statements": [{"expression": {"argumentTypes": null, "id": 10332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10326, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10321, "src": "11594:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10328, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10308, "src": "11660:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 10329, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10316, "src": "11687:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10330, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10318, "src": "11735:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 10327, "name": "_calculateCompleteRightFill", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10638, "src": "11615:27:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$9992_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 10331, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11615:164:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "11594:185:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10333, "nodeType": "ExpressionStatement", "src": "11594:185:4"}]}}, {"expression": {"argumentTypes": null, "id": 10401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10390, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10321, "src": "13308:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10392, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "profitInLeftMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 9989, "src": "13308:41:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10397, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10321, "src": "13420:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10398, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "13420:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10399, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "13420:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10393, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10321, "src": "13352:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10394, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "13352:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10395, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "13352:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "13352:54:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10400, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13352:125:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "13308:169:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10402, "nodeType": "ExpressionStatement", "src": "13308:169:4"}, {"expression": {"argumentTypes": null, "id": 10403, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10321, "src": "13495:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 10322, "id": 10404, "nodeType": "Return", "src": "13488:25:4"}]}, "documentation": "@dev Calculates part of the matched fill results for a given situation using the fill strategy that only\n awards profit denominated in the left maker asset.\n @param leftOrder The left order in the order matching situation.\n @param rightOrder The right order in the order matching situation.\n @param leftMakerAssetAmountRemaining The amount of the left order maker asset that can still be filled.\n @param leftTakerAssetAmountRemaining The amount of the left order taker asset that can still be filled.\n @param rightMakerAssetAmountRemaining The amount of the right order maker asset that can still be filled.\n @param rightTakerAssetAmountRemaining The amount of the right order taker asset that can still be filled.\n @return MatchFillResults struct that does not include fees paid.", "id": 10406, "implemented": true, "kind": "function", "modifiers": [], "name": "_calculateMatchedFillResults", "nodeType": "FunctionDefinition", "parameters": {"id": 10319, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10308, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 10406, "src": "10204:31:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 10307, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "10204:14:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10310, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 10406, "src": "10245:32:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 10309, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "10245:14:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10312, "name": "leftMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10406, "src": "10287:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10311, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10287:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10314, "name": "leftTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10406, "src": "10334:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10313, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10334:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10316, "name": "rightMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10406, "src": "10381:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10315, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10381:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10318, "name": "rightTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10406, "src": "10429:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10317, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10429:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "10194:279:4"}, "returnParameters": {"id": 10322, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10321, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 10406, "src": "10520:44:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 10320, "name": "MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "10520:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "10519:46:4"}, "scope": 10639, "src": "10157:3363:4", "stateMutability": "pure", "superFunction": null, "visibility": "private"}, {"body": {"id": 10536, "nodeType": "Block", "src": "14767:3936:4", "statements": [{"assignments": [10424], "declarations": [{"constant": false, "id": 10424, "name": "doesLeftMakerAssetProfitExist", "nodeType": "VariableDeclaration", "scope": 10536, "src": "14908:34:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 10423, "name": "bool", "nodeType": "ElementaryTypeName", "src": "14908:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "id": 10428, "initialValue": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10427, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10425, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10412, "src": "14945:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 10426, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10418, "src": "14977:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "14945:62:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "14908:99:4"}, {"assignments": [10430], "declarations": [{"constant": false, "id": 10430, "name": "doesRightMakerAssetProfitExist", "nodeType": "VariableDeclaration", "scope": 10536, "src": "15017:35:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 10429, "name": "bool", "nodeType": "ElementaryTypeName", "src": "15017:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "id": 10434, "initialValue": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10431, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10416, "src": "15055:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 10432, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10414, "src": "15088:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "15055:62:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "15017:100:4"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10435, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10414, "src": "16229:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 10436, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10416, "src": "16261:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16229:62:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10447, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10418, "src": "16608:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 10448, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10412, "src": "16641:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16608:62:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 10499, "nodeType": "Block", "src": "17577:342:4", "statements": [{"expression": {"argumentTypes": null, "id": 10497, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10490, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "17657:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10492, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10412, "src": "17722:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10493, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10414, "src": "17769:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10494, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10416, "src": "17816:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10495, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10418, "src": "17864:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 10491, "name": "_calculateCompleteFillBoth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10585, "src": "17678:26:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$9992_memory_ptr_$", "typeString": "function (uint256,uint256,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 10496, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17678:230:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "17657:251:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10498, "nodeType": "ExpressionStatement", "src": "17657:251:4"}]}, "id": 10500, "nodeType": "IfStatement", "src": "16604:1315:4", "trueBody": {"id": 10489, "nodeType": "Block", "src": "16672:899:4", "statements": [{"expression": {"argumentTypes": null, "id": 10456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10450, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "16782:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10453, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "16782:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "16782:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10455, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10412, "src": "16831:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16782:78:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10457, "nodeType": "ExpressionStatement", "src": "16782:78:4"}, {"expression": {"argumentTypes": null, "id": 10464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10458, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "16874:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10461, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "16874:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10462, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "16874:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10463, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10414, "src": "16923:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16874:78:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10465, "nodeType": "ExpressionStatement", "src": "16874:78:4"}, {"expression": {"argumentTypes": null, "id": 10479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10466, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "17233:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10469, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "17233:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10470, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "17233:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10473, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10410, "src": "17334:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10474, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "17334:27:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10475, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10410, "src": "17379:10:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10476, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "17379:27:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10477, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10412, "src": "17424:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10471, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "17283:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 10689, "src": "17283:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10478, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17283:184:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "17233:234:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10480, "nodeType": "ExpressionStatement", "src": "17233:234:4"}, {"expression": {"argumentTypes": null, "id": 10487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10481, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "17481:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10484, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "17481:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10485, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "17481:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10486, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10412, "src": "17531:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "17481:79:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10488, "nodeType": "ExpressionStatement", "src": "17481:79:4"}]}}, "id": 10501, "nodeType": "IfStatement", "src": "16225:1694:4", "trueBody": {"id": 10446, "nodeType": "Block", "src": "16293:305:4", "statements": [{"expression": {"argumentTypes": null, "id": 10444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10438, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "16402:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10440, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10408, "src": "16468:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 10441, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10416, "src": "16495:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10442, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10418, "src": "16543:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 10439, "name": "_calculateCompleteRightFill", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10638, "src": "16423:27:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$9992_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 10443, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16423:164:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "16402:185:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10445, "nodeType": "ExpressionStatement", "src": "16402:185:4"}]}}, {"condition": {"argumentTypes": null, "id": 10502, "name": "doesLeftMakerAssetProfitExist", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10424, "src": "18055:29:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 10517, "nodeType": "IfStatement", "src": "18051:237:4", "trueBody": {"id": 10516, "nodeType": "Block", "src": "18086:202:4", "statements": [{"expression": {"argumentTypes": null, "id": 10514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10503, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "18100:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10505, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "profitInLeftMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 9989, "src": "18100:41:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10510, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "18216:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10511, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "18216:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10512, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "18216:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10506, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "18144:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10507, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "18144:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10508, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "18144:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "18144:54:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10513, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18144:133:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18100:177:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10515, "nodeType": "ExpressionStatement", "src": "18100:177:4"}]}}, {"condition": {"argumentTypes": null, "id": 10518, "name": "doesRightMakerAssetProfitExist", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10430, "src": "18426:30:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 10533, "nodeType": "IfStatement", "src": "18422:239:4", "trueBody": {"id": 10532, "nodeType": "Block", "src": "18458:203:4", "statements": [{"expression": {"argumentTypes": null, "id": 10530, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10519, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "18472:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10521, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "profitInRightMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 9991, "src": "18472:42:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10526, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "18590:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "18590:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10528, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "18590:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10522, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "18517:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10523, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "18517:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10524, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "18517:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10525, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "18517:55:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10529, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18517:133:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18472:178:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10531, "nodeType": "ExpressionStatement", "src": "18472:178:4"}]}}, {"expression": {"argumentTypes": null, "id": 10534, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10421, "src": "18678:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 10422, "id": 10535, "nodeType": "Return", "src": "18671:25:4"}]}, "documentation": "@dev Calculates part of the matched fill results for a given situation using the maximal fill order matching\n strategy.\n @param leftOrder The left order in the order matching situation.\n @param rightOrder The right order in the order matching situation.\n @param leftMakerAssetAmountRemaining The amount of the left order maker asset that can still be filled.\n @param leftTakerAssetAmountRemaining The amount of the left order taker asset that can still be filled.\n @param rightMakerAssetAmountRemaining The amount of the right order maker asset that can still be filled.\n @param rightTakerAssetAmountRemaining The amount of the right order taker asset that can still be filled.\n @return MatchFillResults struct that does not include fees paid.", "id": 10537, "implemented": true, "kind": "function", "modifiers": [], "name": "_calculateMatchedFillResultsWithMaximalFill", "nodeType": "FunctionDefinition", "parameters": {"id": 10419, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10408, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 10537, "src": "14401:31:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 10407, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "14401:14:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10410, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 10537, "src": "14442:32:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 10409, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "14442:14:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10412, "name": "leftMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10537, "src": "14484:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10411, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14484:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10414, "name": "leftTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10537, "src": "14531:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10413, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14531:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10416, "name": "rightMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10537, "src": "14578:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10415, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14578:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10418, "name": "rightTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10537, "src": "14626:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10417, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14626:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "14391:279:4"}, "returnParameters": {"id": 10422, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10421, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 10537, "src": "14717:44:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 10420, "name": "MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "14717:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "14716:46:4"}, "scope": 10639, "src": "14339:4364:4", "stateMutability": "pure", "superFunction": null, "visibility": "private"}, {"body": {"id": 10584, "nodeType": "Block", "src": "19820:462:4", "statements": [{"expression": {"argumentTypes": null, "id": 10556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10550, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10548, "src": "19893:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10553, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "19893:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10554, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "19893:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10555, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10539, "src": "19942:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "19893:78:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10557, "nodeType": "ExpressionStatement", "src": "19893:78:4"}, {"expression": {"argumentTypes": null, "id": 10564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10558, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10548, "src": "19981:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10561, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "19981:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10562, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "19981:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10563, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10541, "src": "20030:29:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "19981:78:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10565, "nodeType": "ExpressionStatement", "src": "19981:78:4"}, {"expression": {"argumentTypes": null, "id": 10572, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10566, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10548, "src": "20069:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10569, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "20069:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10570, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "20069:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10571, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10543, "src": "20119:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "20069:80:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10573, "nodeType": "ExpressionStatement", "src": "20069:80:4"}, {"expression": {"argumentTypes": null, "id": 10580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10574, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10548, "src": "20159:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "20159:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10578, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "20159:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10579, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10545, "src": "20209:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "20159:80:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10581, "nodeType": "ExpressionStatement", "src": "20159:80:4"}, {"expression": {"argumentTypes": null, "id": 10582, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10548, "src": "20257:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 10549, "id": 10583, "nodeType": "Return", "src": "20250:25:4"}]}, "documentation": "@dev Calculates the fill results for the maker and taker in the order matching and writes the results\n to the fillResults that are being collected on the order. Both orders will be fully filled in this\n case.\n @param leftMakerAssetAmountRemaining The amount of the left maker asset that is remaining to be filled.\n @param leftTakerAssetAmountRemaining The amount of the left taker asset that is remaining to be filled.\n @param rightMakerAssetAmountRemaining The amount of the right maker asset that is remaining to be filled.\n @param rightTakerAssetAmountRemaining The amount of the right taker asset that is remaining to be filled.\n @return MatchFillResults struct that does not include fees paid or spreads taken.", "id": 10585, "implemented": true, "kind": "function", "modifiers": [], "name": "_calculateCompleteFillBoth", "nodeType": "FunctionDefinition", "parameters": {"id": 10546, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10539, "name": "leftMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10585, "src": "19537:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10538, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19537:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10541, "name": "leftTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10585, "src": "19584:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10540, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19584:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10543, "name": "rightMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10585, "src": "19631:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10542, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19631:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10545, "name": "rightTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10585, "src": "19679:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10544, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19679:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "19527:196:4"}, "returnParameters": {"id": 10549, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10548, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 10585, "src": "19770:44:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 10547, "name": "MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "19770:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "19769:46:4"}, "scope": 10639, "src": "19492:790:4", "stateMutability": "pure", "superFunction": null, "visibility": "private"}, {"body": {"id": 10637, "nodeType": "Block", "src": "21271:790:4", "statements": [{"expression": {"argumentTypes": null, "id": 10602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10596, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10594, "src": "21281:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10599, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "21281:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10600, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "21281:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10601, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10589, "src": "21331:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "21281:80:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10603, "nodeType": "ExpressionStatement", "src": "21281:80:4"}, {"expression": {"argumentTypes": null, "id": 10610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10604, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10594, "src": "21371:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10607, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "21371:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10608, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "21371:47:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10609, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10591, "src": "21421:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "21371:80:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10611, "nodeType": "ExpressionStatement", "src": "21371:80:4"}, {"expression": {"argumentTypes": null, "id": 10618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10612, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10594, "src": "21461:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10615, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "21461:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10616, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "21461:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 10617, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10589, "src": "21510:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "21461:79:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10619, "nodeType": "ExpressionStatement", "src": "21461:79:4"}, {"expression": {"argumentTypes": null, "id": 10633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10620, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10594, "src": "21802:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 10623, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "21802:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 10624, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "21802:46:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10627, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10587, "src": "21898:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10628, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "21898:26:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 10629, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10587, "src": "21938:9:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10630, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "21938:26:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10631, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10589, "src": "21978:30:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10625, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "21851:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 10626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 10689, "src": "21851:33:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10632, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "21851:167:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "21802:216:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10634, "nodeType": "ExpressionStatement", "src": "21802:216:4"}, {"expression": {"argumentTypes": null, "id": 10635, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10594, "src": "22036:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 10595, "id": 10636, "nodeType": "Return", "src": "22029:25:4"}]}, "documentation": "@dev Calculates the fill results for the maker and taker in the order matching and writes the results\n to the fillResults that are being collected on the order.\n @param leftOrder The left order that is being maximally filled. All of the information about fill amounts\n can be derived from this order and the right asset remaining fields.\n @param rightMakerAssetAmountRemaining The amount of the right maker asset that is remaining to be filled.\n @param rightTakerAssetAmountRemaining The amount of the right taker asset that is remaining to be filled.\n @return MatchFillResults struct that does not include fees paid or spreads taken.", "id": 10638, "implemented": true, "kind": "function", "modifiers": [], "name": "_calculateCompleteRightFill", "nodeType": "FunctionDefinition", "parameters": {"id": 10592, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10587, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 10638, "src": "21041:31:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 10586, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "21041:14:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10589, "name": "rightMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10638, "src": "21082:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10588, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21082:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10591, "name": "rightTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 10638, "src": "21130:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10590, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21130:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "21031:143:4"}, "returnParameters": {"id": 10595, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10594, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 10638, "src": "21221:44:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 10593, "name": "MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "21221:18:4", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "21220:46:4"}, "scope": 10639, "src": "20995:1066:4", "stateMutability": "pure", "superFunction": null, "visibility": "private"}], "scope": 10640, "src": "716:21347:4"}], "src": "580:21484:4"}, "id": 4}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibMath.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibMath.sol", "exportedSymbols": {"LibMath": [10917]}, "id": 10918, "nodeType": "SourceUnit", "nodes": [{"id": 10641, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:5"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol", "file": "@0x/contracts-utils/contracts/src/LibSafeMath.sol", "id": 10642, "nodeType": "ImportDirective", "scope": 10918, "sourceUnit": 11217, "src": "605:59:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "@0x/contracts-utils/contracts/src/LibRichErrors.sol", "id": 10643, "nodeType": "ImportDirective", "scope": 10918, "sourceUnit": 9873, "src": "665:61:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibMathRichErrors.sol", "file": "./LibMathRichErrors.sol", "id": 10644, "nodeType": "ImportDirective", "scope": 10918, "sourceUnit": 11775, "src": "727:33:5", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 10917, "linearizedBaseContracts": [10917], "name": "LibMath", "nodeType": "ContractDefinition", "nodes": [{"id": 10647, "libraryName": {"contractScope": null, "id": 10645, "name": "LibSafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11216, "src": "792:11:5", "typeDescriptions": {"typeIdentifier": "t_contract$_LibSafeMath_$11216", "typeString": "library LibSafeMath"}}, "nodeType": "UsingForDirective", "src": "786:30:5", "typeName": {"id": 10646, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "808:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 10688, "nodeType": "Block", "src": "1336:408:5", "statements": [{"condition": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10659, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10649, "src": "1388:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10660, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10651, "src": "1415:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10661, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10653, "src": "1444:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 10658, "name": "isRoundingErrorFloor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10849, "src": "1350:20:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256,uint256,uint256) pure returns (bool)"}}, "id": 10662, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1350:110:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 10675, "nodeType": "IfStatement", "src": "1346:289:5", "trueBody": {"id": 10674, "nodeType": "Block", "src": "1462:173:5", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10668, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10649, "src": "1547:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10669, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10651, "src": "1574:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10670, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10653, "src": "1603:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10666, "name": "LibMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11774, "src": "1498:17:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMathRichErrors_$11774_$", "typeString": "type(library LibMathRichErrors)"}}, "id": 10667, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "RoundingError", "nodeType": "MemberAccess", "referencedDeclaration": 11773, "src": "1498:31:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256,uint256,uint256) pure returns (bytes memory)"}}, "id": 10671, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1498:125:5", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 10663, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "1476:13:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 10665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "1476:21:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 10672, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1476:148:5", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 10673, "nodeType": "ExpressionStatement", "src": "1476:148:5"}]}}, {"expression": {"argumentTypes": null, "id": 10684, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10676, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10656, "src": "1645:13:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10682, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10651, "src": "1695:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10679, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10653, "src": "1679:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10677, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10649, "src": "1661:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10678, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "1661:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10680, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1661:25:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10681, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeDiv", "nodeType": "MemberAccess", "referencedDeclaration": 11113, "src": "1661:33:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10683, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1661:46:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1645:62:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10685, "nodeType": "ExpressionStatement", "src": "1645:62:5"}, {"expression": {"argumentTypes": null, "id": 10686, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10656, "src": "1724:13:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 10657, "id": 10687, "nodeType": "Return", "src": "1717:20:5"}]}, "documentation": "@dev Calculates partial value given a numerator and denominator rounded down.\n Reverts if rounding error is >= 0.1%\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to calculate partial of.\n @return Partial value of target rounded down.", "id": 10689, "implemented": true, "kind": "function", "modifiers": [], "name": "safeGetPartialAmountFloor", "nodeType": "FunctionDefinition", "parameters": {"id": 10654, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10649, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 10689, "src": "1185:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10648, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1185:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10651, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 10689, "src": "1212:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10650, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1212:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10653, "name": "target", "nodeType": "VariableDeclaration", "scope": 10689, "src": "1241:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10652, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1241:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1175:86:5"}, "returnParameters": {"id": 10657, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10656, "name": "partialAmount", "nodeType": "VariableDeclaration", "scope": 10689, "src": "1309:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10655, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1309:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1308:23:5"}, "scope": 10917, "src": "1141:603:5", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 10736, "nodeType": "Block", "src": "2261:653:5", "statements": [{"condition": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10701, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10691, "src": "2312:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10702, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10693, "src": "2339:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10703, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10695, "src": "2368:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 10700, "name": "isRoundingErrorCeil", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10916, "src": "2275:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256,uint256,uint256) pure returns (bool)"}}, "id": 10704, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2275:109:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 10717, "nodeType": "IfStatement", "src": "2271:288:5", "trueBody": {"id": 10716, "nodeType": "Block", "src": "2386:173:5", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10710, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10691, "src": "2471:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10711, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10693, "src": "2498:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10712, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10695, "src": "2527:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10708, "name": "LibMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11774, "src": "2422:17:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMathRichErrors_$11774_$", "typeString": "type(library LibMathRichErrors)"}}, "id": 10709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "RoundingError", "nodeType": "MemberAccess", "referencedDeclaration": 11773, "src": "2422:31:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256,uint256,uint256) pure returns (bytes memory)"}}, "id": 10713, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2422:125:5", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 10705, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "2400:13:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 10707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "2400:21:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 10714, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2400:148:5", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 10715, "nodeType": "ExpressionStatement", "src": "2400:148:5"}]}}, {"expression": {"argumentTypes": null, "id": 10732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10718, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10698, "src": "2756:13:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10730, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10693, "src": "2864:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "31", "id": 10726, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2839:1:5", "subdenomination": null, "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"}], "expression": {"argumentTypes": null, "id": 10724, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10693, "src": "2819:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "2819:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10727, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2819:22:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10721, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10695, "src": "2790:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10719, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10691, "src": "2772:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10720, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "2772:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10722, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2772:25:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "2772:46:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10728, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2772:70:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10729, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeDiv", "nodeType": "MemberAccess", "referencedDeclaration": 11113, "src": "2772:91:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10731, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2772:104:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2756:120:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10733, "nodeType": "ExpressionStatement", "src": "2756:120:5"}, {"expression": {"argumentTypes": null, "id": 10734, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10698, "src": "2894:13:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 10699, "id": 10735, "nodeType": "Return", "src": "2887:20:5"}]}, "documentation": "@dev Calculates partial value given a numerator and denominator rounded down.\n Reverts if rounding error is >= 0.1%\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to calculate partial of.\n @return Partial value of target rounded up.", "id": 10737, "implemented": true, "kind": "function", "modifiers": [], "name": "safeGetPartialAmountCeil", "nodeType": "FunctionDefinition", "parameters": {"id": 10696, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10691, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 10737, "src": "2110:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10690, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2110:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10693, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 10737, "src": "2137:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10692, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2137:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10695, "name": "target", "nodeType": "VariableDeclaration", "scope": 10737, "src": "2166:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10694, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2166:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2100:86:5"}, "returnParameters": {"id": 10699, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10698, "name": "partialAmount", "nodeType": "VariableDeclaration", "scope": 10737, "src": "2234:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10697, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2234:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2233:23:5"}, "scope": 10917, "src": "2067:847:5", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 10760, "nodeType": "Block", "src": "3380:109:5", "statements": [{"expression": {"argumentTypes": null, "id": 10756, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10748, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10746, "src": "3390:13:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10754, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10741, "src": "3440:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10751, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10743, "src": "3424:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10749, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10739, "src": "3406:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "3406:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10752, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3406:25:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeDiv", "nodeType": "MemberAccess", "referencedDeclaration": 11113, "src": "3406:33:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10755, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3406:46:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3390:62:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10757, "nodeType": "ExpressionStatement", "src": "3390:62:5"}, {"expression": {"argumentTypes": null, "id": 10758, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10746, "src": "3469:13:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 10747, "id": 10759, "nodeType": "Return", "src": "3462:20:5"}]}, "documentation": "@dev Calculates partial value given a numerator and denominator rounded down.\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to calculate partial of.\n @return Partial value of target rounded down.", "id": 10761, "implemented": true, "kind": "function", "modifiers": [], "name": "getPartialAmountFloor", "nodeType": "FunctionDefinition", "parameters": {"id": 10744, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10739, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 10761, "src": "3229:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10738, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3229:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10741, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 10761, "src": "3256:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10740, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3256:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10743, "name": "target", "nodeType": "VariableDeclaration", "scope": 10761, "src": "3285:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10742, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3285:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3219:86:5"}, "returnParameters": {"id": 10747, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10746, "name": "partialAmount", "nodeType": "VariableDeclaration", "scope": 10761, "src": "3353:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10745, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3353:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3352:23:5"}, "scope": 10917, "src": "3189:300:5", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 10790, "nodeType": "Block", "src": "3952:355:5", "statements": [{"expression": {"argumentTypes": null, "id": 10786, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10772, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10770, "src": "4149:13:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10784, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10765, "src": "4257:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "31", "id": 10780, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4232:1:5", "subdenomination": null, "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"}], "expression": {"argumentTypes": null, "id": 10778, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10765, "src": "4212:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "4212:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10781, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4212:22:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10775, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10767, "src": "4183:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10773, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10763, "src": "4165:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "4165:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10776, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4165:25:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10777, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "4165:46:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10782, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4165:70:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10783, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeDiv", "nodeType": "MemberAccess", "referencedDeclaration": 11113, "src": "4165:91:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10785, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4165:104:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4149:120:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10787, "nodeType": "ExpressionStatement", "src": "4149:120:5"}, {"expression": {"argumentTypes": null, "id": 10788, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10770, "src": "4287:13:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 10771, "id": 10789, "nodeType": "Return", "src": "4280:20:5"}]}, "documentation": "@dev Calculates partial value given a numerator and denominator rounded down.\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to calculate partial of.\n @return Partial value of target rounded up.", "id": 10791, "implemented": true, "kind": "function", "modifiers": [], "name": "getPartialAmountCeil", "nodeType": "FunctionDefinition", "parameters": {"id": 10768, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10763, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 10791, "src": "3801:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10762, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3801:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10765, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 10791, "src": "3828:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10764, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3828:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10767, "name": "target", "nodeType": "VariableDeclaration", "scope": 10791, "src": "3857:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10766, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3857:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3791:86:5"}, "returnParameters": {"id": 10771, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10770, "name": "partialAmount", "nodeType": "VariableDeclaration", "scope": 10791, "src": "3925:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10769, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3925:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3924:23:5"}, "scope": 10917, "src": "3762:545:5", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 10848, "nodeType": "Block", "src": "4747:1699:5", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10802, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10795, "src": "4761:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 10803, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4776:1:5", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4761:16:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 10814, "nodeType": "IfStatement", "src": "4757:109:5", "trueBody": {"id": 10813, "nodeType": "Block", "src": "4779:87:5", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 10808, "name": "LibMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11774, "src": "4815:17:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMathRichErrors_$11774_$", "typeString": "type(library LibMathRichErrors)"}}, "id": 10809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DivisionByZeroError", "nodeType": "MemberAccess", "referencedDeclaration": 11753, "src": "4815:37:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 10810, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4815:39:5", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 10805, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "4793:13:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 10807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "4793:21:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 10811, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4793:62:5", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 10812, "nodeType": "ExpressionStatement", "src": "4793:62:5"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 10821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10815, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10797, "src": "5676:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 10816, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5686:1:5", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5676:11:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10820, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10818, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10793, "src": "5691:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 10819, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5704:1:5", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5691:14:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "5676:29:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 10825, "nodeType": "IfStatement", "src": "5672:72:5", "trueBody": {"id": 10824, "nodeType": "Block", "src": "5707:37:5", "statements": [{"expression": {"argumentTypes": null, "hexValue": "66616c7365", "id": 10822, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5728:5:5", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 10801, "id": 10823, "nodeType": "Return", "src": "5721:12:5"}]}}, {"assignments": [10827], "declarations": [{"constant": false, "id": 10827, "name": "remainder", "nodeType": "VariableDeclaration", "scope": 10848, "src": "6239:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10826, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6239:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 10833, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10829, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10797, "src": "6279:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10830, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10793, "src": "6299:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10831, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10795, "src": "6322:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 10828, "name": "mulmod", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12092, "src": "6259:6:5", "typeDescriptions": {"typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10832, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6259:84:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "6239:104:5"}, {"expression": {"argumentTypes": null, "id": 10844, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10834, "name": "isError", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10800, "src": "6353:7:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "31303030", "id": 10837, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6381:4:5", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}, "value": "1000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}], "expression": {"argumentTypes": null, "id": 10835, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10827, "src": "6363:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10836, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "6363:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10838, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6363:23:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10841, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10797, "src": "6408:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10839, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10793, "src": "6390:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "6390:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10842, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6390:25:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6363:52:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6353:62:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 10845, "nodeType": "ExpressionStatement", "src": "6353:62:5"}, {"expression": {"argumentTypes": null, "id": 10846, "name": "isError", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10800, "src": "6432:7:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 10801, "id": 10847, "nodeType": "Return", "src": "6425:14:5"}]}, "documentation": "@dev Checks if rounding error >= 0.1% when rounding down.\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to multiply with numerator/denominator.\n @return Rounding error is present.", "id": 10849, "implemented": true, "kind": "function", "modifiers": [], "name": "isRoundingErrorFloor", "nodeType": "FunctionDefinition", "parameters": {"id": 10798, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10793, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 10849, "src": "4605:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10792, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4605:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10795, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 10849, "src": "4632:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10794, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4632:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10797, "name": "target", "nodeType": "VariableDeclaration", "scope": 10849, "src": "4661:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10796, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4661:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "4595:86:5"}, "returnParameters": {"id": 10801, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10800, "name": "isError", "nodeType": "VariableDeclaration", "scope": 10849, "src": "4729:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 10799, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4729:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "4728:14:5"}, "scope": 10917, "src": "4566:1880:5", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 10915, "nodeType": "Block", "src": "6883:757:5", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10862, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10860, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10853, "src": "6897:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 10861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6912:1:5", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6897:16:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 10872, "nodeType": "IfStatement", "src": "6893:109:5", "trueBody": {"id": 10871, "nodeType": "Block", "src": "6915:87:5", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 10866, "name": "LibMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11774, "src": "6951:17:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMathRichErrors_$11774_$", "typeString": "type(library LibMathRichErrors)"}}, "id": 10867, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DivisionByZeroError", "nodeType": "MemberAccess", "referencedDeclaration": 11753, "src": "6951:37:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 10868, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6951:39:5", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 10863, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "6929:13:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 10865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "6929:21:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 10869, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6929:62:5", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 10870, "nodeType": "ExpressionStatement", "src": "6929:62:5"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 10879, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10875, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10873, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10855, "src": "7066:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 10874, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7076:1:5", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7066:11:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 10876, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10851, "src": "7081:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 10877, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7094:1:5", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7081:14:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7066:29:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 10883, "nodeType": "IfStatement", "src": "7062:257:5", "trueBody": {"id": 10882, "nodeType": "Block", "src": "7097:222:5", "statements": [{"expression": {"argumentTypes": null, "hexValue": "66616c7365", "id": 10880, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7303:5:5", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 10859, "id": 10881, "nodeType": "Return", "src": "7296:12:5"}]}}, {"assignments": [10885], "declarations": [{"constant": false, "id": 10885, "name": "remainder", "nodeType": "VariableDeclaration", "scope": 10915, "src": "7367:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10884, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7367:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 10891, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10887, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10855, "src": "7407:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10888, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10851, "src": "7427:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 10889, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10853, "src": "7450:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 10886, "name": "mulmod", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12092, "src": "7387:6:5", "typeDescriptions": {"typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 10890, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7387:84:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "7367:104:5"}, {"expression": {"argumentTypes": null, "id": 10899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10892, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10885, "src": "7481:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10898, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10895, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10885, "src": "7513:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10893, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10853, "src": "7493:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10894, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "7493:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10896, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7493:30:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"argumentTypes": null, "id": 10897, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10853, "src": "7526:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7493:44:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7481:56:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10900, "nodeType": "ExpressionStatement", "src": "7481:56:5"}, {"expression": {"argumentTypes": null, "id": 10911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10901, "name": "isError", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10858, "src": "7547:7:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 10910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "31303030", "id": 10904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7575:4:5", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}, "value": "1000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}], "expression": {"argumentTypes": null, "id": 10902, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10885, "src": "7557:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10903, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "7557:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10905, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7557:23:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10908, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10855, "src": "7602:6:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 10906, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10851, "src": "7584:9:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 10907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "7584:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 10909, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7584:25:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7557:52:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7547:62:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 10912, "nodeType": "ExpressionStatement", "src": "7547:62:5"}, {"expression": {"argumentTypes": null, "id": 10913, "name": "isError", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10858, "src": "7626:7:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 10859, "id": 10914, "nodeType": "Return", "src": "7619:14:5"}]}, "documentation": "@dev Checks if rounding error >= 0.1% when rounding up.\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to multiply with numerator/denominator.\n @return Rounding error is present.", "id": 10916, "implemented": true, "kind": "function", "modifiers": [], "name": "isRoundingErrorCeil", "nodeType": "FunctionDefinition", "parameters": {"id": 10856, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10851, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 10916, "src": "6741:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10850, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6741:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10853, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 10916, "src": "6768:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10852, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6768:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10855, "name": "target", "nodeType": "VariableDeclaration", "scope": 10916, "src": "6797:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10854, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6797:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "6731:86:5"}, "returnParameters": {"id": 10859, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10858, "name": "isError", "nodeType": "VariableDeclaration", "scope": 10916, "src": "6865:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 10857, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6865:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "6864:14:5"}, "scope": 10917, "src": "6703:937:5", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 10918, "src": "763:6879:5"}], "src": "580:7063:5"}, "id": 5}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibMathRichErrors.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibMathRichErrors.sol", "exportedSymbols": {"LibMathRichErrors": [11774]}, "id": 11775, "nodeType": "SourceUnit", "nodes": [{"id": 11739, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "0:23:6"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 11774, "linearizedBaseContracts": [11774], "name": "LibMathRichErrors", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 11742, "name": "DIVISION_BY_ZERO_ERROR", "nodeType": "VariableDeclaration", "scope": 11774, "src": "109:70:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes"}, "typeName": {"id": 11740, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "109:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": {"argumentTypes": null, "hexValue": "a791837c", "id": 11741, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "166:13:6", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_3c32885641834b9a0e88a20cfe6ff1bfcd518d920d0f652120c2c3eb95ece132", "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"}, "value": null}, "visibility": "internal"}, {"constant": true, "id": 11745, "name": "ROUNDING_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 11774, "src": "253:69:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 11743, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "253:6:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783333396633646532", "id": 11744, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "312:10:6", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_866074082_by_1", "typeString": "int_const 866074082"}, "value": "0x339f3de2"}, "visibility": "internal"}, {"body": {"id": 11752, "nodeType": "Block", "src": "468:46:6", "statements": [{"expression": {"argumentTypes": null, "id": 11750, "name": "DIVISION_BY_ZERO_ERROR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11742, "src": "485:22:6", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "functionReturnParameters": 11749, "id": 11751, "nodeType": "Return", "src": "478:29:6"}]}, "documentation": null, "id": 11753, "implemented": true, "kind": "function", "modifiers": [], "name": "DivisionByZeroError", "nodeType": "FunctionDefinition", "parameters": {"id": 11746, "nodeType": "ParameterList", "parameters": [], "src": "400:2:6"}, "returnParameters": {"id": 11749, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11748, "name": "", "nodeType": "VariableDeclaration", "scope": 11753, "src": "450:12:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11747, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "449:14:6"}, "scope": 11774, "src": "372:142:6", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11772, "nodeType": "Block", "src": "694:161:6", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 11766, "name": "ROUNDING_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11745, "src": "747:23:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 11767, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11755, "src": "784:9:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 11768, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11757, "src": "807:11:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 11769, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11759, "src": "832:6:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 11764, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "711:3:6", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 11765, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "711:22:6", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 11770, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "711:137:6", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 11763, "id": 11771, "nodeType": "Return", "src": "704:144:6"}]}, "documentation": null, "id": 11773, "implemented": true, "kind": "function", "modifiers": [], "name": "RoundingError", "nodeType": "FunctionDefinition", "parameters": {"id": 11760, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11755, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 11773, "src": "552:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11754, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "552:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11757, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 11773, "src": "579:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11756, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "579:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11759, "name": "target", "nodeType": "VariableDeclaration", "scope": 11773, "src": "608:14:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11758, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "608:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "542:86:6"}, "returnParameters": {"id": 11763, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11762, "name": "", "nodeType": "VariableDeclaration", "scope": 11773, "src": "676:12:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11761, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "676:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "675:14:6"}, "scope": 11774, "src": "520:335:6", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 11775, "src": "26:831:6"}], "src": "0:858:6"}, "id": 6}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "exportedSymbols": {"LibOrder": [11028]}, "id": 11029, "nodeType": "SourceUnit", "nodes": [{"id": 10919, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:7"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol", "file": "@0x/contracts-utils/contracts/src/LibEIP712.sol", "id": 10920, "nodeType": "ImportDirective", "scope": 11029, "sourceUnit": 11641, "src": "605:57:7", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 11028, "linearizedBaseContracts": [11028], "name": "LibOrder", "nodeType": "ContractDefinition", "nodes": [{"id": 10923, "libraryName": {"contractScope": null, "id": 10921, "name": "LibOrder", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11028, "src": "695:8:7", "typeDescriptions": {"typeIdentifier": "t_contract$_LibOrder_$11028", "typeString": "library LibOrder"}}, "nodeType": "UsingForDirective", "src": "689:25:7", "typeName": {"contractScope": null, "id": 10922, "name": "Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "708:5:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}}, {"constant": true, "id": 10926, "name": "_EIP712_ORDER_SCHEMA_HASH", "nodeType": "VariableDeclaration", "scope": 11028, "src": "1360:128:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 10924, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1360:7:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"argumentTypes": null, "hexValue": "307866383033323265623833373661616662363465616466386630643736323366323231333066643934393161323231653930326237313363623938346137353334", "id": 10925, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1422:66:7", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_112179127998652384479658782050138692812774837050354146812378168026641797379380_by_1", "typeString": "int_const 1121...(70 digits omitted)...9380"}, "value": "0xf80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a7534"}, "visibility": "internal"}, {"canonicalName": "LibOrder.OrderStatus", "id": 10934, "members": [{"id": 10927, "name": "INVALID", "nodeType": "EnumValue", "src": "1692:7:7"}, {"id": 10928, "name": "INVALID_MAKER_ASSET_AMOUNT", "nodeType": "EnumValue", "src": "1746:26:7"}, {"id": 10929, "name": "INVALID_TAKER_ASSET_AMOUNT", "nodeType": "EnumValue", "src": "1833:26:7"}, {"id": 10930, "name": "FILLABLE", "nodeType": "EnumValue", "src": "1920:8:7"}, {"id": 10931, "name": "EXPIRED", "nodeType": "EnumValue", "src": "1978:7:7"}, {"id": 10932, "name": "FULLY_FILLED", "nodeType": "EnumValue", "src": "2044:12:7"}, {"id": 10933, "name": "CANCELLED", "nodeType": "EnumValue", "src": "2106:9:7"}], "name": "OrderStatus", "nodeType": "EnumDefinition", "src": "1665:503:7"}, {"canonicalName": "LibOrder.Order", "id": 10963, "members": [{"constant": false, "id": 10936, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 10963, "src": "2276:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 10935, "name": "address", "nodeType": "ElementaryTypeName", "src": "2276:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10938, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 10963, "src": "2351:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 10937, "name": "address", "nodeType": "ElementaryTypeName", "src": "2351:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10940, "name": "feeRecipientAddress", "nodeType": "VariableDeclaration", "scope": 10963, "src": "2492:27:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 10939, "name": "address", "nodeType": "ElementaryTypeName", "src": "2492:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10942, "name": "senderAddress", "nodeType": "VariableDeclaration", "scope": 10963, "src": "2588:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 10941, "name": "address", "nodeType": "ElementaryTypeName", "src": "2588:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10944, "name": "makerAssetAmount", "nodeType": "VariableDeclaration", "scope": 10963, "src": "2772:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10943, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2772:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10946, "name": "takerAssetAmount", "nodeType": "VariableDeclaration", "scope": 10963, "src": "2884:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10945, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2884:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10948, "name": "makerFee", "nodeType": "VariableDeclaration", "scope": 10963, "src": "2995:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10947, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2995:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10950, "name": "takerFee", "nodeType": "VariableDeclaration", "scope": 10963, "src": "3094:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10949, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3094:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10952, "name": "expirationTimeSeconds", "nodeType": "VariableDeclaration", "scope": 10963, "src": "3193:29:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10951, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3193:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10954, "name": "salt", "nodeType": "VariableDeclaration", "scope": 10963, "src": "3281:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10953, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3281:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10956, "name": "makerAssetData", "nodeType": "VariableDeclaration", "scope": 10963, "src": "3387:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 10955, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3387:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10958, "name": "takerAssetData", "nodeType": "VariableDeclaration", "scope": 10963, "src": "3580:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 10957, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3580:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10960, "name": "makerFeeAssetData", "nodeType": "VariableDeclaration", "scope": 10963, "src": "3773:23:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 10959, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3773:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10962, "name": "takerFeeAssetData", "nodeType": "VariableDeclaration", "scope": 10963, "src": "3969:23:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 10961, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3969:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "name": "Order", "nodeType": "StructDefinition", "scope": 11028, "src": "2253:1909:7", "visibility": "public"}, {"canonicalName": "LibOrder.OrderInfo", "id": 10970, "members": [{"constant": false, "id": 10965, "name": "orderStatus", "nodeType": "VariableDeclaration", "scope": 10970, "src": "4294:23:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}, "typeName": {"contractScope": null, "id": 10964, "name": "OrderStatus", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10934, "src": "4294:11:7", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10967, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 10970, "src": "4405:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 10966, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4405:7:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10969, "name": "orderTakerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 10970, "src": "4523:35:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 10968, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4523:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "OrderInfo", "nodeType": "StructDefinition", "scope": 11028, "src": "4267:348:7", "visibility": "public"}, {"body": {"id": 10991, "nodeType": "Block", "src": "4960:165:7", "statements": [{"expression": {"argumentTypes": null, "id": 10987, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 10979, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10977, "src": "4970:9:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 10982, "name": "eip712ExchangeDomainHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10974, "src": "5023:24:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 10983, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10972, "src": "5061:5:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 10984, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "getStructHash", "nodeType": "MemberAccess", "referencedDeclaration": 11027, "src": "5061:19:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_Order_$10963_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory) pure returns (bytes32)"}}, "id": 10985, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5061:21:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 10980, "name": "LibEIP712", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11640, "src": "4982:9:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibEIP712_$11640_$", "typeString": "type(library LibEIP712)"}}, "id": 10981, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "hashEIP712Message", "nodeType": "MemberAccess", "referencedDeclaration": 11639, "src": "4982:27:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", "typeString": "function (bytes32,bytes32) pure returns (bytes32)"}}, "id": 10986, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4982:110:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "4970:122:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 10988, "nodeType": "ExpressionStatement", "src": "4970:122:7"}, {"expression": {"argumentTypes": null, "id": 10989, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10977, "src": "5109:9:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 10978, "id": 10990, "nodeType": "Return", "src": "5102:16:7"}]}, "documentation": "@dev Calculates the EIP712 typed data hash of an order with a given domain separator.\n @param order The order structure.\n @return EIP712 typed data hash of the order.", "id": 10992, "implemented": true, "kind": "function", "modifiers": [], "name": "getTypedDataHash", "nodeType": "FunctionDefinition", "parameters": {"id": 10975, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10972, "name": "order", "nodeType": "VariableDeclaration", "scope": 10992, "src": "4836:18:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 10971, "name": "Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4836:5:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 10974, "name": "eip712ExchangeDomainHash", "nodeType": "VariableDeclaration", "scope": 10992, "src": "4856:32:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 10973, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4856:7:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "4835:54:7"}, "returnParameters": {"id": 10978, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10977, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 10992, "src": "4937:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 10976, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4937:7:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "4936:19:7"}, "scope": 11028, "src": "4810:315:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11026, "nodeType": "Block", "src": "5389:2555:7", "statements": [{"assignments": [11000], "declarations": [{"constant": false, "id": 11000, "name": "schemaHash", "nodeType": "VariableDeclaration", "scope": 11026, "src": "5399:18:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 10999, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5399:7:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 11002, "initialValue": {"argumentTypes": null, "id": 11001, "name": "_EIP712_ORDER_SCHEMA_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10926, "src": "5420:25:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5399:46:7"}, {"assignments": [11004], "declarations": [{"constant": false, "id": 11004, "name": "makerAssetData", "nodeType": "VariableDeclaration", "scope": 11026, "src": "5455:27:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11003, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5455:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 11007, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11005, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10994, "src": "5485:5:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 11006, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10956, "src": "5485:20:7", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "5455:50:7"}, {"assignments": [11009], "declarations": [{"constant": false, "id": 11009, "name": "takerAssetData", "nodeType": "VariableDeclaration", "scope": 11026, "src": "5515:27:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11008, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5515:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 11012, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11010, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10994, "src": "5545:5:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 11011, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10958, "src": "5545:20:7", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "5515:50:7"}, {"assignments": [11014], "declarations": [{"constant": false, "id": 11014, "name": "makerFeeAssetData", "nodeType": "VariableDeclaration", "scope": 11026, "src": "5575:30:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11013, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5575:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 11017, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11015, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10994, "src": "5608:5:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 11016, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10960, "src": "5608:23:7", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "5575:56:7"}, {"assignments": [11019], "declarations": [{"constant": false, "id": 11019, "name": "takerFeeAssetData", "nodeType": "VariableDeclaration", "scope": 11026, "src": "5641:30:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11018, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5641:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 11022, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11020, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10994, "src": "5674:5:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 11021, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10962, "src": "5674:23:7", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "5641:56:7"}, {"externalReferences": [{"order": {"declaration": 10994, "isOffset": false, "isSlot": false, "src": "6571:5:7", "valueSize": 1}}, {"order": {"declaration": 10994, "isOffset": false, "isSlot": false, "src": "6735:5:7", "valueSize": 1}}, {"result": {"declaration": 10997, "isOffset": false, "isSlot": false, "src": "7691:6:7", "valueSize": 1}}, {"order": {"declaration": 10994, "isOffset": false, "isSlot": false, "src": "6774:5:7", "valueSize": 1}}, {"order": {"declaration": 10994, "isOffset": false, "isSlot": false, "src": "6894:5:7", "valueSize": 1}}, {"order": {"declaration": 10994, "isOffset": false, "isSlot": false, "src": "6814:5:7", "valueSize": 1}}, {"order": {"declaration": 10994, "isOffset": false, "isSlot": false, "src": "6854:5:7", "valueSize": 1}}, {"makerAssetData": {"declaration": 11004, "isOffset": false, "isSlot": false, "src": "7247:14:7", "valueSize": 1}}, {"schemaHash": {"declaration": 11000, "isOffset": false, "isSlot": false, "src": "7169:10:7", "valueSize": 1}}, {"takerAssetData": {"declaration": 11009, "isOffset": false, "isSlot": false, "src": "7370:14:7", "valueSize": 1}}, {"makerFeeAssetData": {"declaration": 11014, "isOffset": false, "isSlot": false, "src": "7496:17:7", "valueSize": 1}}, {"takerFeeAssetData": {"declaration": 11019, "isOffset": false, "isSlot": false, "src": "7622:17:7", "valueSize": 1}}, {"makerAssetData": {"declaration": 11004, "isOffset": false, "isSlot": false, "src": "7220:14:7", "valueSize": 1}}, {"takerAssetData": {"declaration": 11009, "isOffset": false, "isSlot": false, "src": "7343:14:7", "valueSize": 1}}, {"makerFeeAssetData": {"declaration": 11014, "isOffset": false, "isSlot": false, "src": "7466:17:7", "valueSize": 1}}, {"takerFeeAssetData": {"declaration": 11019, "isOffset": false, "isSlot": false, "src": "7592:17:7", "valueSize": 1}}], "id": 11023, "nodeType": "InlineAssembly", "operations": "{\n if lt(order, 32) { invalid() }\n let pos1 := sub(order, 32)\n let pos2 := add(order, 320)\n let pos3 := add(order, 352)\n let pos4 := add(order, 384)\n let pos5 := add(order, 416)\n let temp1 := mload(pos1)\n let temp2 := mload(pos2)\n let temp3 := mload(pos3)\n let temp4 := mload(pos4)\n let temp5 := mload(pos5)\n mstore(pos1, schemaHash)\n mstore(pos2, keccak256(add(makerAssetData, 32), mload(makerAssetData)))\n mstore(pos3, keccak256(add(takerAssetData, 32), mload(takerAssetData)))\n mstore(pos4, keccak256(add(makerFeeAssetData, 32), mload(makerFeeAssetData)))\n mstore(pos5, keccak256(add(takerFeeAssetData, 32), mload(takerFeeAssetData)))\n result := keccak256(pos1, 480)\n mstore(pos1, temp1)\n mstore(pos2, temp2)\n mstore(pos3, temp3)\n mstore(pos4, temp4)\n mstore(pos5, temp5)\n}", "src": "6448:1467:7"}, {"expression": {"argumentTypes": null, "id": 11024, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10997, "src": "7931:6:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 10998, "id": 11025, "nodeType": "Return", "src": "7924:13:7"}]}, "documentation": "@dev Calculates EIP712 hash of the order struct.\n @param order The order structure.\n @return EIP712 hash of the order struct.", "id": 11027, "implemented": true, "kind": "function", "modifiers": [], "name": "getStructHash", "nodeType": "FunctionDefinition", "parameters": {"id": 10995, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10994, "name": "order", "nodeType": "VariableDeclaration", "scope": 11027, "src": "5302:18:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 10993, "name": "Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "5302:5:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}], "src": "5301:20:7"}, "returnParameters": {"id": 10998, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 10997, "name": "result", "nodeType": "VariableDeclaration", "scope": 11027, "src": "5369:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 10996, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5369:7:7", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "5368:16:7"}, "scope": 11028, "src": "5279:2665:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 11029, "src": "665:7281:7"}], "src": "580:7367:7"}, "id": 7}, "./contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "exportedSymbols": {"LibZeroExTransaction": [11594]}, "id": 11595, "nodeType": "SourceUnit", "nodes": [{"id": 11512, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:8"}, {"id": 11513, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:8"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol", "file": "@0x/contracts-utils/contracts/src/LibEIP712.sol", "id": 11514, "nodeType": "ImportDirective", "scope": 11595, "sourceUnit": 11641, "src": "639:57:8", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 11594, "linearizedBaseContracts": [11594], "name": "LibZeroExTransaction", "nodeType": "ContractDefinition", "nodes": [{"id": 11517, "libraryName": {"contractScope": null, "id": 11515, "name": "LibZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11594, "src": "741:20:8", "typeDescriptions": {"typeIdentifier": "t_contract$_LibZeroExTransaction_$11594", "typeString": "library LibZeroExTransaction"}}, "nodeType": "UsingForDirective", "src": "735:49:8", "typeName": {"contractScope": null, "id": 11516, "name": "ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "766:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}}, {"constant": true, "id": 11520, "name": "_EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH", "nodeType": "VariableDeclaration", "scope": 11594, "src": "1093:133:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11518, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1093:7:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"argumentTypes": null, "hexValue": "307865633639383136393830613361336361343535343431306536303235333935336539666633373562613435333661393861646661313563633731353431353038", "id": 11519, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1160:66:8", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_106932244377073024889118374392183388102606682592814568813348457896092663813384_by_1", "typeString": "int_const 1069...(70 digits omitted)...3384"}, "value": "0xec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508"}, "visibility": "internal"}, {"canonicalName": "LibZeroExTransaction.ZeroExTransaction", "id": 11531, "members": [{"constant": false, "id": 11522, "name": "salt", "nodeType": "VariableDeclaration", "scope": 11531, "src": "1268:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11521, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1268:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11524, "name": "expirationTimeSeconds", "nodeType": "VariableDeclaration", "scope": 11531, "src": "1370:29:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11523, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1370:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11526, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 11531, "src": "1464:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11525, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1464:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11528, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 11531, "src": "1566:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11527, "name": "address", "nodeType": "ElementaryTypeName", "src": "1566:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11530, "name": "data", "nodeType": "VariableDeclaration", "scope": 11531, "src": "1640:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 11529, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1640:5:8", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "name": "ZeroExTransaction", "nodeType": "StructDefinition", "scope": 11594, "src": "1233:471:8", "visibility": "public"}, {"body": {"id": 11552, "nodeType": "Block", "src": "2095:267:8", "statements": [{"expression": {"argumentTypes": null, "id": 11548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 11540, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11538, "src": "2189:15:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 11543, "name": "eip712ExchangeDomainHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11535, "src": "2248:24:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 11544, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11533, "src": "2286:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 11545, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "getStructHash", "nodeType": "MemberAccess", "referencedDeclaration": 11593, "src": "2286:25:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory) pure returns (bytes32)"}}, "id": 11546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2286:27:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 11541, "name": "LibEIP712", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11640, "src": "2207:9:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibEIP712_$11640_$", "typeString": "type(library LibEIP712)"}}, "id": 11542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "hashEIP712Message", "nodeType": "MemberAccess", "referencedDeclaration": 11639, "src": "2207:27:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", "typeString": "function (bytes32,bytes32) pure returns (bytes32)"}}, "id": 11547, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2207:116:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2189:134:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 11549, "nodeType": "ExpressionStatement", "src": "2189:134:8"}, {"expression": {"argumentTypes": null, "id": 11550, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11538, "src": "2340:15:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 11539, "id": 11551, "nodeType": "Return", "src": "2333:22:8"}]}, "documentation": "@dev Calculates the EIP712 typed data hash of a transaction with a given domain separator.\n @param transaction 0x transaction structure.\n @return EIP712 typed data hash of the transaction.", "id": 11553, "implemented": true, "kind": "function", "modifiers": [], "name": "getTypedDataHash", "nodeType": "FunctionDefinition", "parameters": {"id": 11536, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11533, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 11553, "src": "1947:36:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 11532, "name": "ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "1947:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11535, "name": "eip712ExchangeDomainHash", "nodeType": "VariableDeclaration", "scope": 11553, "src": "1985:32:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11534, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1985:7:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "1946:72:8"}, "returnParameters": {"id": 11539, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11538, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 11553, "src": "2066:23:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11537, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2066:7:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "2065:25:8"}, "scope": 11594, "src": "1921:441:8", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11592, "nodeType": "Block", "src": "2670:1658:8", "statements": [{"assignments": [11561], "declarations": [{"constant": false, "id": 11561, "name": "schemaHash", "nodeType": "VariableDeclaration", "scope": 11592, "src": "2680:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11560, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2680:7:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 11563, "initialValue": {"argumentTypes": null, "id": 11562, "name": "_EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11520, "src": "2701:38:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "2680:59:8"}, {"assignments": [11565], "declarations": [{"constant": false, "id": 11565, "name": "data", "nodeType": "VariableDeclaration", "scope": 11592, "src": "2749:17:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11564, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2749:5:8", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 11568, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11566, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11555, "src": "2769:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 11567, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "data", "nodeType": "MemberAccess", "referencedDeclaration": 11530, "src": "2769:16:8", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2749:36:8"}, {"assignments": [11570], "declarations": [{"constant": false, "id": 11570, "name": "salt", "nodeType": "VariableDeclaration", "scope": 11592, "src": "2795:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11569, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2795:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 11573, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11571, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11555, "src": "2810:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 11572, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "salt", "nodeType": "MemberAccess", "referencedDeclaration": 11522, "src": "2810:16:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2795:31:8"}, {"assignments": [11575], "declarations": [{"constant": false, "id": 11575, "name": "expirationTimeSeconds", "nodeType": "VariableDeclaration", "scope": 11592, "src": "2836:29:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11574, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2836:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 11578, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11576, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11555, "src": "2868:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 11577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expirationTimeSeconds", "nodeType": "MemberAccess", "referencedDeclaration": 11524, "src": "2868:33:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2836:65:8"}, {"assignments": [11580], "declarations": [{"constant": false, "id": 11580, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 11592, "src": "2911:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11579, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2911:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 11583, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11581, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11555, "src": "2930:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 11582, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "gasPrice", "nodeType": "MemberAccess", "referencedDeclaration": 11526, "src": "2930:20:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2911:39:8"}, {"assignments": [11585], "declarations": [{"constant": false, "id": 11585, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 11592, "src": "2960:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11584, "name": "address", "nodeType": "ElementaryTypeName", "src": "2960:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 11588, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11586, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11555, "src": "2984:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 11587, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "signerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 11528, "src": "2984:25:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2960:49:8"}, {"externalReferences": [{"data": {"declaration": 11565, "isOffset": false, "isSlot": false, "src": "3406:4:8", "valueSize": 1}}, {"data": {"declaration": 11565, "isOffset": false, "isSlot": false, "src": "3423:4:8", "valueSize": 1}}, {"schemaHash": {"declaration": 11561, "isOffset": false, "isSlot": false, "src": "3535:10:8", "valueSize": 1}}, {"gasPrice": {"declaration": 11580, "isOffset": false, "isSlot": false, "src": "3901:8:8", "valueSize": 1}}, {"signerAddress": {"declaration": 11585, "isOffset": false, "isSlot": false, "src": "4020:13:8", "valueSize": 1}}, {"salt": {"declaration": 11570, "isOffset": false, "isSlot": false, "src": "3664:4:8", "valueSize": 1}}, {"expirationTimeSeconds": {"declaration": 11575, "isOffset": false, "isSlot": false, "src": "3774:21:8", "valueSize": 1}}, {"result": {"declaration": 11558, "isOffset": false, "isSlot": false, "src": "4257:6:8", "valueSize": 1}}], "id": 11589, "nodeType": "InlineAssembly", "operations": "{\n let dataHash := keccak256(add(data, 32), mload(data))\n let memPtr := mload(64)\n mstore(memPtr, schemaHash)\n mstore(add(memPtr, 32), salt)\n mstore(add(memPtr, 64), expirationTimeSeconds)\n mstore(add(memPtr, 96), gasPrice)\n mstore(add(memPtr, 128), and(signerAddress, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(memPtr, 160), dataHash)\n result := keccak256(memPtr, 192)\n}", "src": "3317:982:8"}, {"expression": {"argumentTypes": null, "id": 11590, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11558, "src": "4315:6:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 11559, "id": 11591, "nodeType": "Return", "src": "4308:13:8"}]}, "documentation": "@dev Calculates EIP712 hash of the 0x transaction struct.\n @param transaction 0x transaction structure.\n @return EIP712 hash of the transaction struct.", "id": 11593, "implemented": true, "kind": "function", "modifiers": [], "name": "getStructHash", "nodeType": "FunctionDefinition", "parameters": {"id": 11556, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11555, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 11593, "src": "2565:36:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 11554, "name": "ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "2565:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}], "src": "2564:38:8"}, "returnParameters": {"id": 11559, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11558, "name": "result", "nodeType": "VariableDeclaration", "scope": 11593, "src": "2650:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11557, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2650:7:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "2649:16:8"}, "scope": 11594, "src": "2542:1786:8", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 11595, "src": "699:3631:8"}], "src": "580:3751:8"}, "id": 8}, "./contracts/exchange/contracts-staking/contracts/src/interfaces/IStaking.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-staking/contracts/src/interfaces/IStaking.sol", "exportedSymbols": {"IStaking": [11510]}, "id": 11511, "nodeType": "SourceUnit", "nodes": [{"id": 11325, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:9"}, {"id": 11326, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:9"}, {"absolutePath": "./contracts/exchange/contracts-erc20/contracts/src/interfaces/IEtherToken.sol", "file": "@0x/contracts-erc20/contracts/src/interfaces/IEtherToken.sol", "id": 11327, "nodeType": "ImportDirective", "scope": 11511, "sourceUnit": 11655, "src": "639:70:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-staking/contracts/src/interfaces/IStructs.sol", "file": "./IStructs.sol", "id": 11328, "nodeType": "ImportDirective", "scope": 11511, "sourceUnit": 11921, "src": "710:24:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-staking/contracts/src/interfaces/IZrxVault.sol", "file": "./IZrxVault.sol", "id": 11329, "nodeType": "ImportDirective", "scope": 11511, "sourceUnit": 11994, "src": "735:25:9", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 11510, "linearizedBaseContracts": [11510], "name": "IStaking", "nodeType": "ContractDefinition", "nodes": [{"body": null, "documentation": "@dev Adds a new exchange address\n @param addr Address of exchange contract to add", "id": 11334, "implemented": false, "kind": "function", "modifiers": [], "name": "addExchangeAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 11332, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11331, "name": "addr", "nodeType": "VariableDeclaration", "scope": 11334, "src": "914:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11330, "name": "address", "nodeType": "ElementaryTypeName", "src": "914:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "913:14:9"}, "returnParameters": {"id": 11333, "nodeType": "ParameterList", "parameters": [], "src": "944:0:9"}, "scope": 11510, "src": "886:59:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Create a new staking pool. The sender will be the operator of this pool.\n Note that an operator must be payable.\n @param operatorShare Portion of rewards owned by the operator, in ppm.\n @param addOperatorAsMaker Adds operator to the created pool as a maker for convenience iff true.\n @return poolId The unique pool id generated for this pool.", "id": 11343, "implemented": false, "kind": "function", "modifiers": [], "name": "createStakingPool", "nodeType": "FunctionDefinition", "parameters": {"id": 11339, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11336, "name": "operatorShare", "nodeType": "VariableDeclaration", "scope": 11343, "src": "1362:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 11335, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1362:6:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11338, "name": "addOperatorAsMaker", "nodeType": "VariableDeclaration", "scope": 11343, "src": "1384:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 11337, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1384:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "1361:47:9"}, "returnParameters": {"id": 11342, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11341, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11343, "src": "1443:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11340, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1443:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "1442:16:9"}, "scope": 11510, "src": "1335:124:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Decreases the operator share for the given pool (i.e. increases pool rewards for members).\n @param poolId Unique Id of pool.\n @param newOperatorShare The newly decreased percentage of any rewards owned by the operator.", "id": 11350, "implemented": false, "kind": "function", "modifiers": [], "name": "decreaseStakingPoolOperatorShare", "nodeType": "FunctionDefinition", "parameters": {"id": 11348, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11345, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11350, "src": "1753:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11344, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1753:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11347, "name": "newOperatorShare", "nodeType": "VariableDeclaration", "scope": 11350, "src": "1769:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 11346, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1769:6:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}], "src": "1752:41:9"}, "returnParameters": {"id": 11349, "nodeType": "ParameterList", "parameters": [], "src": "1810:0:9"}, "scope": 11510, "src": "1711:100:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Begins a new epoch, preparing the prior one for finalization.\n Throws if not enough time has passed between epochs or if the\n previous epoch was not fully finalized.\n @return numPoolsToFinalize The number of unfinalized pools.", "id": 11355, "implemented": false, "kind": "function", "modifiers": [], "name": "endEpoch", "nodeType": "FunctionDefinition", "parameters": {"id": 11351, "nodeType": "ParameterList", "parameters": [], "src": "2105:2:9"}, "returnParameters": {"id": 11354, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11353, "name": "", "nodeType": "VariableDeclaration", "scope": 11355, "src": "2142:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2142:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2141:9:9"}, "scope": 11510, "src": "2088:63:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Instantly finalizes a single pool that earned rewards in the previous\n epoch, crediting it rewards for members and withdrawing operator's\n rewards as WETH. This can be called by internal functions that need\n to finalize a pool immediately. Does nothing if the pool is already\n finalized or did not earn rewards in the previous epoch.\n @param poolId The pool ID to finalize.", "id": 11360, "implemented": false, "kind": "function", "modifiers": [], "name": "finalizePool", "nodeType": "FunctionDefinition", "parameters": {"id": 11358, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11357, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11360, "src": "2621:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11356, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2621:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "2620:16:9"}, "returnParameters": {"id": 11359, "nodeType": "ParameterList", "parameters": [], "src": "2653:0:9"}, "scope": 11510, "src": "2599:55:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Initialize storage owned by this contract.\n This function should not be called directly.\n The StakingProxy contract will call it in `attachStakingContract()`.", "id": 11363, "implemented": false, "kind": "function", "modifiers": [], "name": "init", "nodeType": "FunctionDefinition", "parameters": {"id": 11361, "nodeType": "ParameterList", "parameters": [], "src": "2869:2:9"}, "returnParameters": {"id": 11362, "nodeType": "ParameterList", "parameters": [], "src": "2888:0:9"}, "scope": 11510, "src": "2856:33:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Allows caller to join a staking pool as a maker.\n @param poolId Unique id of pool.", "id": 11368, "implemented": false, "kind": "function", "modifiers": [], "name": "joinStakingPoolAsMaker", "nodeType": "FunctionDefinition", "parameters": {"id": 11366, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11365, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11368, "src": "3030:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11364, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3030:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "3029:16:9"}, "returnParameters": {"id": 11367, "nodeType": "ParameterList", "parameters": [], "src": "3062:0:9"}, "scope": 11510, "src": "2998:65:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Moves stake between statuses: 'undelegated' or 'delegated'.\n Delegated stake can also be moved between pools.\n This change comes into effect next epoch.\n @param from status to move stake out of.\n @param to status to move stake into.\n @param amount of stake to move.", "id": 11377, "implemented": false, "kind": "function", "modifiers": [], "name": "moveStake", "nodeType": "FunctionDefinition", "parameters": {"id": 11375, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11370, "name": "from", "nodeType": "VariableDeclaration", "scope": 11377, "src": "3421:32:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_struct$_StakeInfo_$11909_calldata_ptr", "typeString": "struct IStructs.StakeInfo"}, "typeName": {"contractScope": null, "id": 11369, "name": "IStructs.StakeInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11909, "src": "3421:18:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StakeInfo_$11909_storage_ptr", "typeString": "struct IStructs.StakeInfo"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11372, "name": "to", "nodeType": "VariableDeclaration", "scope": 11377, "src": "3463:30:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_struct$_StakeInfo_$11909_calldata_ptr", "typeString": "struct IStructs.StakeInfo"}, "typeName": {"contractScope": null, "id": 11371, "name": "IStructs.StakeInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11909, "src": "3463:18:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StakeInfo_$11909_storage_ptr", "typeString": "struct IStructs.StakeInfo"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11374, "name": "amount", "nodeType": "VariableDeclaration", "scope": 11377, "src": "3503:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11373, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3503:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3411:112:9"}, "returnParameters": {"id": 11376, "nodeType": "ParameterList", "parameters": [], "src": "3540:0:9"}, "scope": 11510, "src": "3393:148:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Pays a protocol fee in ETH.\n @param makerAddress The address of the order's maker.\n @param payerAddress The address that is responsible for paying the protocol fee.\n @param protocolFee The amount of protocol fees that should be paid.", "id": 11386, "implemented": false, "kind": "function", "modifiers": [], "name": "payProtocolFee", "nodeType": "FunctionDefinition", "parameters": {"id": 11384, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11379, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 11386, "src": "3848:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11378, "name": "address", "nodeType": "ElementaryTypeName", "src": "3848:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11381, "name": "payerAddress", "nodeType": "VariableDeclaration", "scope": 11386, "src": "3878:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11380, "name": "address", "nodeType": "ElementaryTypeName", "src": "3878:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11383, "name": "protocolFee", "nodeType": "VariableDeclaration", "scope": 11386, "src": "3908:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11382, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3908:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3838:95:9"}, "returnParameters": {"id": 11385, "nodeType": "ParameterList", "parameters": [], "src": "3966:0:9"}, "scope": 11510, "src": "3815:152:9", "stateMutability": "payable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Removes an existing exchange address\n @param addr Address of exchange contract to remove", "id": 11391, "implemented": false, "kind": "function", "modifiers": [], "name": "removeExchangeAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 11389, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11388, "name": "addr", "nodeType": "VariableDeclaration", "scope": 11391, "src": "4113:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11387, "name": "address", "nodeType": "ElementaryTypeName", "src": "4113:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "4112:14:9"}, "returnParameters": {"id": 11390, "nodeType": "ParameterList", "parameters": [], "src": "4143:0:9"}, "scope": 11510, "src": "4082:62:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Set all configurable parameters at once.\n @param _epochDurationInSeconds Minimum seconds between epochs.\n @param _rewardDelegatedStakeWeight How much delegated stake is weighted vs operator stake, in ppm.\n @param _minimumPoolStake Minimum amount of stake required in a pool to collect rewards.\n @param _cobbDouglasAlphaNumerator Numerator for cobb douglas alpha factor.\n @param _cobbDouglasAlphaDenominator Denominator for cobb douglas alpha factor.", "id": 11404, "implemented": false, "kind": "function", "modifiers": [], "name": "setParams", "nodeType": "FunctionDefinition", "parameters": {"id": 11402, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11393, "name": "_epochDurationInSeconds", "nodeType": "VariableDeclaration", "scope": 11404, "src": "4676:31:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11392, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4676:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11395, "name": "_rewardDelegatedStakeWeight", "nodeType": "VariableDeclaration", "scope": 11404, "src": "4717:34:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 11394, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4717:6:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11397, "name": "_minimumPoolStake", "nodeType": "VariableDeclaration", "scope": 11404, "src": "4761:25:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11396, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4761:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11399, "name": "_cobbDouglasAlphaNumerator", "nodeType": "VariableDeclaration", "scope": 11404, "src": "4796:33:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 11398, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4796:6:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11401, "name": "_cobbDouglasAlphaDenominator", "nodeType": "VariableDeclaration", "scope": 11404, "src": "4839:35:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 11400, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4839:6:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}], "src": "4666:214:9"}, "returnParameters": {"id": 11403, "nodeType": "ParameterList", "parameters": [], "src": "4897:0:9"}, "scope": 11510, "src": "4648:250:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Stake ZRX tokens. Tokens are deposited into the ZRX Vault.\n Unstake to retrieve the ZRX. Stake is in the 'Active' status.\n @param amount of ZRX to stake.", "id": 11409, "implemented": false, "kind": "function", "modifiers": [], "name": "stake", "nodeType": "FunctionDefinition", "parameters": {"id": 11407, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11406, "name": "amount", "nodeType": "VariableDeclaration", "scope": 11409, "src": "5105:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11405, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5105:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "5104:16:9"}, "returnParameters": {"id": 11408, "nodeType": "ParameterList", "parameters": [], "src": "5137:0:9"}, "scope": 11510, "src": "5090:48:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Unstake. Tokens are withdrawn from the ZRX Vault and returned to\n the staker. Stake must be in the 'undelegated' status in both the\n current and next epoch in order to be unstaked.\n @param amount of ZRX to unstake.", "id": 11414, "implemented": false, "kind": "function", "modifiers": [], "name": "unstake", "nodeType": "FunctionDefinition", "parameters": {"id": 11412, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11411, "name": "amount", "nodeType": "VariableDeclaration", "scope": 11414, "src": "5420:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11410, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5420:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "5419:16:9"}, "returnParameters": {"id": 11413, "nodeType": "ParameterList", "parameters": [], "src": "5452:0:9"}, "scope": 11510, "src": "5403:50:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Withdraws the caller's WETH rewards that have accumulated\n until the last epoch.\n @param poolId Unique id of pool.", "id": 11419, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawDelegatorRewards", "nodeType": "FunctionDefinition", "parameters": {"id": 11417, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11416, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11419, "src": "5640:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11415, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5640:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "5639:16:9"}, "returnParameters": {"id": 11418, "nodeType": "ParameterList", "parameters": [], "src": "5672:0:9"}, "scope": 11510, "src": "5606:67:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Computes the reward balance in ETH of a specific member of a pool.\n @param poolId Unique id of pool.\n @param member The member of the pool.\n @return totalReward Balance in ETH.", "id": 11428, "implemented": false, "kind": "function", "modifiers": [], "name": "computeRewardBalanceOfDelegator", "nodeType": "FunctionDefinition", "parameters": {"id": 11424, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11421, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11428, "src": "5931:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11420, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5931:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11423, "name": "member", "nodeType": "VariableDeclaration", "scope": 11428, "src": "5947:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11422, "name": "address", "nodeType": "ElementaryTypeName", "src": "5947:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "5930:32:9"}, "returnParameters": {"id": 11427, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11426, "name": "reward", "nodeType": "VariableDeclaration", "scope": 11428, "src": "6010:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11425, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6010:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "6009:16:9"}, "scope": 11510, "src": "5890:136:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Computes the reward balance in ETH of the operator of a pool.\n @param poolId Unique id of pool.\n @return totalReward Balance in ETH.", "id": 11435, "implemented": false, "kind": "function", "modifiers": [], "name": "computeRewardBalanceOfOperator", "nodeType": "FunctionDefinition", "parameters": {"id": 11431, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11430, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11435, "src": "6232:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11429, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6232:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "6231:16:9"}, "returnParameters": {"id": 11434, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11433, "name": "reward", "nodeType": "VariableDeclaration", "scope": 11435, "src": "6295:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11432, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6295:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "6294:16:9"}, "scope": 11510, "src": "6192:119:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns the earliest end time in seconds of this epoch.\n The next epoch can begin once this time is reached.\n Epoch period = [startTimeInSeconds..endTimeInSeconds)\n @return Time in seconds.", "id": 11440, "implemented": false, "kind": "function", "modifiers": [], "name": "getCurrentEpochEarliestEndTimeInSeconds", "nodeType": "FunctionDefinition", "parameters": {"id": 11436, "nodeType": "ParameterList", "parameters": [], "src": "6599:2:9"}, "returnParameters": {"id": 11439, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11438, "name": "", "nodeType": "VariableDeclaration", "scope": 11440, "src": "6649:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11437, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6649:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "6648:9:9"}, "scope": 11510, "src": "6551:107:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Gets global stake for a given status.\n @param stakeStatus UNDELEGATED or DELEGATED\n @return Global stake for given status.", "id": 11447, "implemented": false, "kind": "function", "modifiers": [], "name": "getGlobalStakeByStatus", "nodeType": "FunctionDefinition", "parameters": {"id": 11443, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11442, "name": "stakeStatus", "nodeType": "VariableDeclaration", "scope": 11447, "src": "6846:32:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$11904", "typeString": "enum IStructs.StakeStatus"}, "typeName": {"contractScope": null, "id": 11441, "name": "IStructs.StakeStatus", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11904, "src": "6846:20:9", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$11904", "typeString": "enum IStructs.StakeStatus"}}, "value": null, "visibility": "internal"}], "src": "6845:34:9"}, "returnParameters": {"id": 11446, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11445, "name": "balance", "nodeType": "VariableDeclaration", "scope": 11447, "src": "6927:37:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$11901_memory_ptr", "typeString": "struct IStructs.StoredBalance"}, "typeName": {"contractScope": null, "id": 11444, "name": "IStructs.StoredBalance", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11901, "src": "6927:22:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$11901_storage_ptr", "typeString": "struct IStructs.StoredBalance"}}, "value": null, "visibility": "internal"}], "src": "6926:39:9"}, "scope": 11510, "src": "6814:152:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Gets an owner's stake balances by status.\n @param staker Owner of stake.\n @param stakeStatus UNDELEGATED or DELEGATED\n @return Owner's stake balances for given status.", "id": 11456, "implemented": false, "kind": "function", "modifiers": [], "name": "getOwnerStakeByStatus", "nodeType": "FunctionDefinition", "parameters": {"id": 11452, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11449, "name": "staker", "nodeType": "VariableDeclaration", "scope": 11456, "src": "7214:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11448, "name": "address", "nodeType": "ElementaryTypeName", "src": "7214:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11451, "name": "stakeStatus", "nodeType": "VariableDeclaration", "scope": 11456, "src": "7238:32:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$11904", "typeString": "enum IStructs.StakeStatus"}, "typeName": {"contractScope": null, "id": 11450, "name": "IStructs.StakeStatus", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11904, "src": "7238:20:9", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$11904", "typeString": "enum IStructs.StakeStatus"}}, "value": null, "visibility": "internal"}], "src": "7204:72:9"}, "returnParameters": {"id": 11455, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11454, "name": "balance", "nodeType": "VariableDeclaration", "scope": 11456, "src": "7324:37:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$11901_memory_ptr", "typeString": "struct IStructs.StoredBalance"}, "typeName": {"contractScope": null, "id": 11453, "name": "IStructs.StoredBalance", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11901, "src": "7324:22:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$11901_storage_ptr", "typeString": "struct IStructs.StoredBalance"}}, "value": null, "visibility": "internal"}], "src": "7323:39:9"}, "scope": 11510, "src": "7174:189:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Retrieves all configurable parameter values.\n @return _epochDurationInSeconds Minimum seconds between epochs.\n @return _rewardDelegatedStakeWeight How much delegated stake is weighted vs operator stake, in ppm.\n @return _minimumPoolStake Minimum amount of stake required in a pool to collect rewards.\n @return _cobbDouglasAlphaNumerator Numerator for cobb douglas alpha factor.\n @return _cobbDouglasAlphaDenominator Denominator for cobb douglas alpha factor.", "id": 11469, "implemented": false, "kind": "function", "modifiers": [], "name": "getParams", "nodeType": "FunctionDefinition", "parameters": {"id": 11457, "nodeType": "ParameterList", "parameters": [], "src": "7894:2:9"}, "returnParameters": {"id": 11468, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11459, "name": "_epochDurationInSeconds", "nodeType": "VariableDeclaration", "scope": 11469, "src": "7957:31:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11458, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7957:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11461, "name": "_rewardDelegatedStakeWeight", "nodeType": "VariableDeclaration", "scope": 11469, "src": "8002:34:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 11460, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "8002:6:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11463, "name": "_minimumPoolStake", "nodeType": "VariableDeclaration", "scope": 11469, "src": "8050:25:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11462, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8050:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11465, "name": "_cobbDouglasAlphaNumerator", "nodeType": "VariableDeclaration", "scope": 11469, "src": "8089:33:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 11464, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "8089:6:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11467, "name": "_cobbDouglasAlphaDenominator", "nodeType": "VariableDeclaration", "scope": 11469, "src": "8136:35:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 11466, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "8136:6:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}], "src": "7943:238:9"}, "scope": 11510, "src": "7876:306:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@param staker of stake.\n @param poolId Unique Id of pool.\n @return Stake delegated to pool by staker.", "id": 11478, "implemented": false, "kind": "function", "modifiers": [], "name": "getStakeDelegatedToPoolByOwner", "nodeType": "FunctionDefinition", "parameters": {"id": 11474, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11471, "name": "staker", "nodeType": "VariableDeclaration", "scope": 11478, "src": "8352:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11470, "name": "address", "nodeType": "ElementaryTypeName", "src": "8352:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11473, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11478, "src": "8368:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11472, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8368:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "8351:32:9"}, "returnParameters": {"id": 11477, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11476, "name": "balance", "nodeType": "VariableDeclaration", "scope": 11478, "src": "8431:37:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$11901_memory_ptr", "typeString": "struct IStructs.StoredBalance"}, "typeName": {"contractScope": null, "id": 11475, "name": "IStructs.StoredBalance", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11901, "src": "8431:22:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$11901_storage_ptr", "typeString": "struct IStructs.StoredBalance"}}, "value": null, "visibility": "internal"}], "src": "8430:39:9"}, "scope": 11510, "src": "8312:158:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns a staking pool\n @param poolId Unique id of pool.", "id": 11485, "implemented": false, "kind": "function", "modifiers": [], "name": "getStakingPool", "nodeType": "FunctionDefinition", "parameters": {"id": 11481, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11480, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11485, "src": "8577:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11479, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8577:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "8576:16:9"}, "returnParameters": {"id": 11484, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11483, "name": "", "nodeType": "VariableDeclaration", "scope": 11485, "src": "8640:20:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Pool_$11919_memory_ptr", "typeString": "struct IStructs.Pool"}, "typeName": {"contractScope": null, "id": 11482, "name": "IStructs.Pool", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11919, "src": "8640:13:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Pool_$11919_storage_ptr", "typeString": "struct IStructs.Pool"}}, "value": null, "visibility": "internal"}], "src": "8639:22:9"}, "scope": 11510, "src": "8553:109:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Get stats on a staking pool in this epoch.\n @param poolId Pool Id to query.\n @return PoolStats struct for pool id.", "id": 11492, "implemented": false, "kind": "function", "modifiers": [], "name": "getStakingPoolStatsThisEpoch", "nodeType": "FunctionDefinition", "parameters": {"id": 11488, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11487, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11492, "src": "8848:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11486, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8848:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "8847:16:9"}, "returnParameters": {"id": 11491, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11490, "name": "", "nodeType": "VariableDeclaration", "scope": 11492, "src": "8911:25:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_PoolStats_$11883_memory_ptr", "typeString": "struct IStructs.PoolStats"}, "typeName": {"contractScope": null, "id": 11489, "name": "IStructs.PoolStats", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11883, "src": "8911:18:9", "typeDescriptions": {"typeIdentifier": "t_struct$_PoolStats_$11883_storage_ptr", "typeString": "struct IStructs.PoolStats"}}, "value": null, "visibility": "internal"}], "src": "8910:27:9"}, "scope": 11510, "src": "8810:128:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns the total stake delegated to a specific staking pool,\n across all members.\n @param poolId Unique Id of pool.\n @return Total stake delegated to pool.", "id": 11499, "implemented": false, "kind": "function", "modifiers": [], "name": "getTotalStakeDelegatedToPool", "nodeType": "FunctionDefinition", "parameters": {"id": 11495, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11494, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11499, "src": "9178:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11493, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9178:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "9177:16:9"}, "returnParameters": {"id": 11498, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11497, "name": "balance", "nodeType": "VariableDeclaration", "scope": 11499, "src": "9241:37:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$11901_memory_ptr", "typeString": "struct IStructs.StoredBalance"}, "typeName": {"contractScope": null, "id": 11496, "name": "IStructs.StoredBalance", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11901, "src": "9241:22:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$11901_storage_ptr", "typeString": "struct IStructs.StoredBalance"}}, "value": null, "visibility": "internal"}], "src": "9240:39:9"}, "scope": 11510, "src": "9140:140:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev An overridable way to access the deployed WETH contract.\n Must be view to allow overrides to access state.\n @return wethContract The WETH contract instance.", "id": 11504, "implemented": false, "kind": "function", "modifiers": [], "name": "getWethContract", "nodeType": "FunctionDefinition", "parameters": {"id": 11500, "nodeType": "ParameterList", "parameters": [], "src": "9499:2:9"}, "returnParameters": {"id": 11503, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11502, "name": "wethContract", "nodeType": "VariableDeclaration", "scope": 11504, "src": "9549:24:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IEtherToken_$11654", "typeString": "contract IEtherToken"}, "typeName": {"contractScope": null, "id": 11501, "name": "IEtherToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11654, "src": "9549:11:9", "typeDescriptions": {"typeIdentifier": "t_contract$_IEtherToken_$11654", "typeString": "contract IEtherToken"}}, "value": null, "visibility": "internal"}], "src": "9548:26:9"}, "scope": 11510, "src": "9475:100:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev An overridable way to access the deployed zrxVault.\n Must be view to allow overrides to access state.\n @return zrxVault The zrxVault contract.", "id": 11509, "implemented": false, "kind": "function", "modifiers": [], "name": "getZrxVault", "nodeType": "FunctionDefinition", "parameters": {"id": 11505, "nodeType": "ParameterList", "parameters": [], "src": "9776:2:9"}, "returnParameters": {"id": 11508, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11507, "name": "zrxVault", "nodeType": "VariableDeclaration", "scope": 11509, "src": "9826:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IZrxVault_$11993", "typeString": "contract IZrxVault"}, "typeName": {"contractScope": null, "id": 11506, "name": "IZrxVault", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11993, "src": "9826:9:9", "typeDescriptions": {"typeIdentifier": "t_contract$_IZrxVault_$11993", "typeString": "contract IZrxVault"}}, "value": null, "visibility": "internal"}], "src": "9825:20:9"}, "scope": 11510, "src": "9756:90:9", "stateMutability": "view", "superFunction": null, "visibility": "external"}], "scope": 11511, "src": "763:9085:9"}], "src": "580:9269:9"}, "id": 9}, "./contracts/exchange/contracts-staking/contracts/src/interfaces/IStructs.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-staking/contracts/src/interfaces/IStructs.sol", "exportedSymbols": {"IStructs": [11920]}, "id": 11921, "nodeType": "SourceUnit", "nodes": [{"id": 11876, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:10"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": null, "fullyImplemented": true, "id": 11920, "linearizedBaseContracts": [11920], "name": "IStructs", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "IStructs.PoolStats", "id": 11883, "members": [{"constant": false, "id": 11878, "name": "feesCollected", "nodeType": "VariableDeclaration", "scope": 11883, "src": "912:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11877, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "912:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11880, "name": "weightedStake", "nodeType": "VariableDeclaration", "scope": 11883, "src": "943:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11879, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "943:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11882, "name": "membersStake", "nodeType": "VariableDeclaration", "scope": 11883, "src": "974:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11881, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "974:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "PoolStats", "nodeType": "StructDefinition", "scope": 11920, "src": "885:116:10", "visibility": "public"}, {"canonicalName": "IStructs.AggregatedStats", "id": 11894, "members": [{"constant": false, "id": 11885, "name": "rewardsAvailable", "nodeType": "VariableDeclaration", "scope": 11894, "src": "1691:24:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11884, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1691:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11887, "name": "numPoolsToFinalize", "nodeType": "VariableDeclaration", "scope": 11894, "src": "1725:26:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11886, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1725:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11889, "name": "totalFeesCollected", "nodeType": "VariableDeclaration", "scope": 11894, "src": "1761:26:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11888, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1761:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11891, "name": "totalWeightedStake", "nodeType": "VariableDeclaration", "scope": 11894, "src": "1797:26:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11890, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1797:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11893, "name": "totalRewardsFinalized", "nodeType": "VariableDeclaration", "scope": 11894, "src": "1833:29:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11892, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1833:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "AggregatedStats", "nodeType": "StructDefinition", "scope": 11920, "src": "1658:211:10", "visibility": "public"}, {"canonicalName": "IStructs.StoredBalance", "id": 11901, "members": [{"constant": false, "id": 11896, "name": "currentEpoch", "nodeType": "VariableDeclaration", "scope": 11901, "src": "2254:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 11895, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2254:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11898, "name": "currentEpochBalance", "nodeType": "VariableDeclaration", "scope": 11901, "src": "2283:26:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint96", "typeString": "uint96"}, "typeName": {"id": 11897, "name": "uint96", "nodeType": "ElementaryTypeName", "src": "2283:6:10", "typeDescriptions": {"typeIdentifier": "t_uint96", "typeString": "uint96"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11900, "name": "nextEpochBalance", "nodeType": "VariableDeclaration", "scope": 11901, "src": "2319:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint96", "typeString": "uint96"}, "typeName": {"id": 11899, "name": "uint96", "nodeType": "ElementaryTypeName", "src": "2319:6:10", "typeDescriptions": {"typeIdentifier": "t_uint96", "typeString": "uint96"}}, "value": null, "visibility": "internal"}], "name": "StoredBalance", "nodeType": "StructDefinition", "scope": 11920, "src": "2223:126:10", "visibility": "public"}, {"canonicalName": "IStructs.StakeStatus", "id": 11904, "members": [{"id": 11902, "name": "UNDELEGATED", "nodeType": "EnumValue", "src": "2603:11:10"}, {"id": 11903, "name": "DELEGATED", "nodeType": "EnumValue", "src": "2624:9:10"}], "name": "StakeStatus", "nodeType": "EnumDefinition", "src": "2576:63:10"}, {"canonicalName": "IStructs.StakeInfo", "id": 11909, "members": [{"constant": false, "id": 11906, "name": "status", "nodeType": "VariableDeclaration", "scope": 11909, "src": "2836:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$11904", "typeString": "enum IStructs.StakeStatus"}, "typeName": {"contractScope": null, "id": 11905, "name": "StakeStatus", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11904, "src": "2836:11:10", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$11904", "typeString": "enum IStructs.StakeStatus"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11908, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 11909, "src": "2864:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11907, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2864:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "name": "StakeInfo", "nodeType": "StructDefinition", "scope": 11920, "src": "2809:76:10", "visibility": "public"}, {"canonicalName": "IStructs.Fraction", "id": 11914, "members": [{"constant": false, "id": 11911, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 11914, "src": "3062:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11910, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3062:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11913, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 11914, "src": "3089:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11912, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3089:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "Fraction", "nodeType": "StructDefinition", "scope": 11920, "src": "3036:79:10", "visibility": "public"}, {"canonicalName": "IStructs.Pool", "id": 11919, "members": [{"constant": false, "id": 11916, "name": "operator", "nodeType": "VariableDeclaration", "scope": 11919, "src": "3331:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11915, "name": "address", "nodeType": "ElementaryTypeName", "src": "3331:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11918, "name": "operatorShare", "nodeType": "VariableDeclaration", "scope": 11919, "src": "3357:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 11917, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "3357:6:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}], "name": "Pool", "nodeType": "StructDefinition", "scope": 11920, "src": "3309:75:10", "visibility": "public"}], "scope": 11921, "src": "606:2780:10"}], "src": "580:2807:10"}, "id": 10}, "./contracts/exchange/contracts-staking/contracts/src/interfaces/IZrxVault.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-staking/contracts/src/interfaces/IZrxVault.sol", "exportedSymbols": {"IZrxVault": [11993]}, "id": 11994, "nodeType": "SourceUnit", "nodes": [{"id": 11922, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:11"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 11993, "linearizedBaseContracts": [11993], "name": "IZrxVault", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": "@dev Emmitted whenever a StakingProxy is set in a vault.", "id": 11926, "name": "StakingProxySet", "nodeType": "EventDefinition", "parameters": {"id": 11925, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11924, "indexed": false, "name": "stakingProxyAddress", "nodeType": "VariableDeclaration", "scope": 11926, "src": "720:27:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11923, "name": "address", "nodeType": "ElementaryTypeName", "src": "720:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "719:29:11"}, "src": "698:51:11"}, {"anonymous": false, "documentation": "@dev Emitted when the Staking contract is put into Catastrophic Failure Mode\n @param sender Address of sender (`msg.sender`)", "id": 11930, "name": "InCatastrophicFailureMode", "nodeType": "EventDefinition", "parameters": {"id": 11929, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11928, "indexed": false, "name": "sender", "nodeType": "VariableDeclaration", "scope": 11930, "src": "927:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11927, "name": "address", "nodeType": "ElementaryTypeName", "src": "927:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "926:16:11"}, "src": "895:48:11"}, {"anonymous": false, "documentation": "@dev Emitted when Zrx Tokens are deposited into the vault.\n @param staker of Zrx Tokens.\n @param amount of Zrx Tokens deposited.", "id": 11936, "name": "Deposit", "nodeType": "EventDefinition", "parameters": {"id": 11935, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11932, "indexed": true, "name": "staker", "nodeType": "VariableDeclaration", "scope": 11936, "src": "1123:22:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11931, "name": "address", "nodeType": "ElementaryTypeName", "src": "1123:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11934, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", "scope": 11936, "src": "1155:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11933, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1155:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1113:62:11"}, "src": "1100:76:11"}, {"anonymous": false, "documentation": "@dev Emitted when Zrx Tokens are withdrawn from the vault.\n @param staker of Zrx Tokens.\n @param amount of Zrx Tokens withdrawn.", "id": 11942, "name": "Withdraw", "nodeType": "EventDefinition", "parameters": {"id": 11941, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11938, "indexed": true, "name": "staker", "nodeType": "VariableDeclaration", "scope": 11942, "src": "1357:22:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11937, "name": "address", "nodeType": "ElementaryTypeName", "src": "1357:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11940, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", "scope": 11942, "src": "1389:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11939, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1389:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1347:62:11"}, "src": "1333:77:11"}, {"anonymous": false, "documentation": "@dev Emitted whenever the ZRX AssetProxy is set.", "id": 11946, "name": "ZrxProxySet", "nodeType": "EventDefinition", "parameters": {"id": 11945, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11944, "indexed": false, "name": "zrxProxyAddress", "nodeType": "VariableDeclaration", "scope": 11946, "src": "1491:23:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11943, "name": "address", "nodeType": "ElementaryTypeName", "src": "1491:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1490:25:11"}, "src": "1473:43:11"}, {"body": null, "documentation": "@dev Sets the address of the StakingProxy contract.\n Note that only the contract staker can call this function.\n @param _stakingProxyAddress Address of Staking proxy contract.", "id": 11951, "implemented": false, "kind": "function", "modifiers": [], "name": "setStakingProxy", "nodeType": "FunctionDefinition", "parameters": {"id": 11949, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11948, "name": "_stakingProxyAddress", "nodeType": "VariableDeclaration", "scope": 11951, "src": "1745:28:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11947, "name": "address", "nodeType": "ElementaryTypeName", "src": "1745:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1744:30:11"}, "returnParameters": {"id": 11950, "nodeType": "ParameterList", "parameters": [], "src": "1791:0:11"}, "scope": 11993, "src": "1720:72:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Vault enters into Catastrophic Failure Mode.\n *** WARNING - ONCE IN CATOSTROPHIC FAILURE MODE, YOU CAN NEVER GO BACK! ***\n Note that only the contract staker can call this function.", "id": 11954, "implemented": false, "kind": "function", "modifiers": [], "name": "enterCatastrophicFailure", "nodeType": "FunctionDefinition", "parameters": {"id": 11952, "nodeType": "ParameterList", "parameters": [], "src": "2040:2:11"}, "returnParameters": {"id": 11953, "nodeType": "ParameterList", "parameters": [], "src": "2059:0:11"}, "scope": 11993, "src": "2007:53:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Sets the Zrx proxy.\n Note that only the contract staker can call this.\n Note that this can only be called when *not* in Catastrophic Failure mode.\n @param zrxProxyAddress Address of the 0x Zrx Proxy.", "id": 11959, "implemented": false, "kind": "function", "modifiers": [], "name": "setZrxProxy", "nodeType": "FunctionDefinition", "parameters": {"id": 11957, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11956, "name": "zrxProxyAddress", "nodeType": "VariableDeclaration", "scope": 11959, "src": "2321:23:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11955, "name": "address", "nodeType": "ElementaryTypeName", "src": "2321:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "2320:25:11"}, "returnParameters": {"id": 11958, "nodeType": "ParameterList", "parameters": [], "src": "2362:0:11"}, "scope": 11993, "src": "2300:63:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Deposit an `amount` of Zrx Tokens from `staker` into the vault.\n Note that only the Staking contract can call this.\n Note that this can only be called when *not* in Catastrophic Failure mode.\n @param staker of Zrx Tokens.\n @param amount of Zrx Tokens to deposit.", "id": 11966, "implemented": false, "kind": "function", "modifiers": [], "name": "depositFrom", "nodeType": "FunctionDefinition", "parameters": {"id": 11964, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11961, "name": "staker", "nodeType": "VariableDeclaration", "scope": 11966, "src": "2694:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11960, "name": "address", "nodeType": "ElementaryTypeName", "src": "2694:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11963, "name": "amount", "nodeType": "VariableDeclaration", "scope": 11966, "src": "2710:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11962, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2710:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2693:32:11"}, "returnParameters": {"id": 11965, "nodeType": "ParameterList", "parameters": [], "src": "2742:0:11"}, "scope": 11993, "src": "2673:70:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Withdraw an `amount` of Zrx Tokens to `staker` from the vault.\n Note that only the Staking contract can call this.\n Note that this can only be called when *not* in Catastrophic Failure mode.\n @param staker of Zrx Tokens.\n @param amount of Zrx Tokens to withdraw.", "id": 11973, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawFrom", "nodeType": "FunctionDefinition", "parameters": {"id": 11971, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11968, "name": "staker", "nodeType": "VariableDeclaration", "scope": 11973, "src": "3075:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11967, "name": "address", "nodeType": "ElementaryTypeName", "src": "3075:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11970, "name": "amount", "nodeType": "VariableDeclaration", "scope": 11973, "src": "3091:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11969, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3091:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3074:32:11"}, "returnParameters": {"id": 11972, "nodeType": "ParameterList", "parameters": [], "src": "3123:0:11"}, "scope": 11993, "src": "3053:71:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Withdraw ALL Zrx Tokens to `staker` from the vault.\n Note that this can only be called when *in* Catastrophic Failure mode.\n @param staker of Zrx Tokens.", "id": 11980, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawAllFrom", "nodeType": "FunctionDefinition", "parameters": {"id": 11976, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11975, "name": "staker", "nodeType": "VariableDeclaration", "scope": 11980, "src": "3336:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11974, "name": "address", "nodeType": "ElementaryTypeName", "src": "3336:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "3335:16:11"}, "returnParameters": {"id": 11979, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11978, "name": "", "nodeType": "VariableDeclaration", "scope": 11980, "src": "3386:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11977, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3386:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3385:9:11"}, "scope": 11993, "src": "3311:84:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns the balance in Zrx Tokens of the `staker`\n @return Balance in Zrx.", "id": 11987, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": {"id": 11983, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11982, "name": "staker", "nodeType": "VariableDeclaration", "scope": 11987, "src": "3515:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11981, "name": "address", "nodeType": "ElementaryTypeName", "src": "3515:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "3514:16:11"}, "returnParameters": {"id": 11986, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11985, "name": "", "nodeType": "VariableDeclaration", "scope": 11987, "src": "3578:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11984, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3578:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3577:9:11"}, "scope": 11993, "src": "3496:91:11", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns the entire balance of Zrx tokens in the vault.", "id": 11992, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOfZrxVault", "nodeType": "FunctionDefinition", "parameters": {"id": 11988, "nodeType": "ParameterList", "parameters": [], "src": "3687:2:11"}, "returnParameters": {"id": 11991, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11990, "name": "", "nodeType": "VariableDeclaration", "scope": 11992, "src": "3737:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11989, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3737:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3736:9:11"}, "scope": 11993, "src": "3661:85:11", "stateMutability": "view", "superFunction": null, "visibility": "external"}], "scope": 11994, "src": "606:3142:11"}], "src": "580:3169:11"}, "id": 11}, "./contracts/exchange/contracts-utils/contracts/src/LibBytes.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibBytes.sol", "exportedSymbols": {"LibBytes": [9843]}, "id": 9844, "nodeType": "SourceUnit", "nodes": [{"id": 9344, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:12"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibBytesRichErrors.sol", "file": "./LibBytesRichErrors.sol", "id": 9345, "nodeType": "ImportDirective", "scope": 9844, "sourceUnit": 11690, "src": "605:34:12", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "./LibRichErrors.sol", "id": 9346, "nodeType": "ImportDirective", "scope": 9844, "sourceUnit": 9873, "src": "640:29:12", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 9843, "linearizedBaseContracts": [9843], "name": "LibBytes", "nodeType": "ContractDefinition", "nodes": [{"id": 9349, "libraryName": {"contractScope": null, "id": 9347, "name": "LibBytes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9843, "src": "702:8:12", "typeDescriptions": {"typeIdentifier": "t_contract$_LibBytes_$9843", "typeString": "library LibBytes"}}, "nodeType": "UsingForDirective", "src": "696:25:12", "typeName": {"id": 9348, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "715:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, {"body": {"id": 9359, "nodeType": "Block", "src": "1102:101:12", "statements": [{"externalReferences": [{"memoryAddress": {"declaration": 9354, "isOffset": false, "isSlot": false, "src": "1135:13:12", "valueSize": 1}}, {"input": {"declaration": 9351, "isOffset": false, "isSlot": false, "src": "1152:5:12", "valueSize": 1}}], "id": 9356, "nodeType": "InlineAssembly", "operations": "{ memoryAddress := input }", "src": "1112:55:12"}, {"expression": {"argumentTypes": null, "id": 9357, "name": "memoryAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9354, "src": "1183:13:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 9355, "id": 9358, "nodeType": "Return", "src": "1176:20:12"}]}, "documentation": "@dev Gets the memory address for a byte array.\n @param input Byte array to lookup.\n @return memoryAddress Memory address of byte array. This\n points to the header of the byte array which contains\n the length.", "id": 9360, "implemented": true, "kind": "function", "modifiers": [], "name": "rawAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 9352, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9351, "name": "input", "nodeType": "VariableDeclaration", "scope": 9360, "src": "1008:18:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9350, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1008:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1007:20:12"}, "returnParameters": {"id": 9355, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9354, "name": "memoryAddress", "nodeType": "VariableDeclaration", "scope": 9360, "src": "1075:21:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9353, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1075:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1074:23:12"}, "scope": 9843, "src": "988:215:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9370, "nodeType": "Block", "src": "1521:110:12", "statements": [{"externalReferences": [{"memoryAddress": {"declaration": 9365, "isOffset": false, "isSlot": false, "src": "1554:13:12", "valueSize": 1}}, {"input": {"declaration": 9362, "isOffset": false, "isSlot": false, "src": "1575:5:12", "valueSize": 1}}], "id": 9367, "nodeType": "InlineAssembly", "operations": "{\n memoryAddress := add(input, 32)\n}", "src": "1531:64:12"}, {"expression": {"argumentTypes": null, "id": 9368, "name": "memoryAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9365, "src": "1611:13:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 9366, "id": 9369, "nodeType": "Return", "src": "1604:20:12"}]}, "documentation": "@dev Gets the memory address for the contents of a byte array.\n @param input Byte array to lookup.\n @return memoryAddress Memory address of the contents of the byte array.", "id": 9371, "implemented": true, "kind": "function", "modifiers": [], "name": "contentAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 9363, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9362, "name": "input", "nodeType": "VariableDeclaration", "scope": 9371, "src": "1427:18:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9361, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1427:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1426:20:12"}, "returnParameters": {"id": 9366, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9365, "name": "memoryAddress", "nodeType": "VariableDeclaration", "scope": 9371, "src": "1494:21:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9364, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1494:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1493:23:12"}, "scope": 9843, "src": "1403:228:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9401, "nodeType": "Block", "src": "1997:4170:12", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9380, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9377, "src": "2011:6:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 9381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2020:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "2011:11:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 9399, "nodeType": "Block", "src": "2483:3678:12", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9385, "name": "source", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9375, "src": "2561:6:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "id": 9386, "name": "dest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9373, "src": "2571:4:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2561:14:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9390, "nodeType": "IfStatement", "src": "2557:59:12", "trueBody": {"id": 9389, "nodeType": "Block", "src": "2577:39:12", "statements": [{"expression": null, "functionReturnParameters": 9379, "id": 9388, "nodeType": "Return", "src": "2595:7:12"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9391, "name": "source", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9375, "src": "3296:6:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 9392, "name": "dest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9373, "src": "3305:4:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3296:13:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 9397, "nodeType": "Block", "src": "4627:1524:12", "statements": [{"externalReferences": [{"length": {"declaration": 9377, "isOffset": false, "isSlot": false, "src": "4844:6:12", "valueSize": 1}}, {"length": {"declaration": 9377, "isOffset": false, "isSlot": false, "src": "4830:6:12", "valueSize": 1}}, {"source": {"declaration": 9375, "isOffset": false, "isSlot": false, "src": "5260:6:12", "valueSize": 1}}, {"source": {"declaration": 9375, "isOffset": false, "isSlot": false, "src": "4892:6:12", "valueSize": 1}}, {"length": {"declaration": 9377, "isOffset": false, "isSlot": false, "src": "4900:6:12", "valueSize": 1}}, {"dest": {"declaration": 9373, "isOffset": false, "isSlot": false, "src": "4944:4:12", "valueSize": 1}}, {"length": {"declaration": 9377, "isOffset": false, "isSlot": false, "src": "4950:6:12", "valueSize": 1}}, {"dest": {"declaration": 9373, "isOffset": false, "isSlot": false, "src": "6107:4:12", "valueSize": 1}}, {"dest": {"declaration": 9373, "isOffset": false, "isSlot": false, "src": "5850:4:12", "valueSize": 1}}], "id": 9396, "nodeType": "InlineAssembly", "operations": "{\n length := sub(length, 32)\n let sEnd := add(source, length)\n let dEnd := add(dest, length)\n let first := mload(source)\n for { } slt(dest, dEnd) { }\n {\n mstore(dEnd, mload(sEnd))\n sEnd := sub(sEnd, 32)\n dEnd := sub(dEnd, 32)\n }\n mstore(dest, first)\n}", "src": "4645:1492:12"}]}, "id": 9398, "nodeType": "IfStatement", "src": "3292:2859:12", "trueBody": {"id": 9395, "nodeType": "Block", "src": "3311:1310:12", "statements": [{"externalReferences": [{"length": {"declaration": 9377, "isOffset": false, "isSlot": false, "src": "3609:6:12", "valueSize": 1}}, {"length": {"declaration": 9377, "isOffset": false, "isSlot": false, "src": "3623:6:12", "valueSize": 1}}, {"source": {"declaration": 9375, "isOffset": false, "isSlot": false, "src": "3671:6:12", "valueSize": 1}}, {"length": {"declaration": 9377, "isOffset": false, "isSlot": false, "src": "3679:6:12", "valueSize": 1}}, {"dest": {"declaration": 9373, "isOffset": false, "isSlot": false, "src": "3723:4:12", "valueSize": 1}}, {"length": {"declaration": 9377, "isOffset": false, "isSlot": false, "src": "3729:6:12", "valueSize": 1}}, {"source": {"declaration": 9375, "isOffset": false, "isSlot": false, "src": "4314:6:12", "valueSize": 1}}, {"source": {"declaration": 9375, "isOffset": false, "isSlot": false, "src": "4376:6:12", "valueSize": 1}}, {"source": {"declaration": 9375, "isOffset": false, "isSlot": false, "src": "4409:6:12", "valueSize": 1}}, {"dest": {"declaration": 9373, "isOffset": false, "isSlot": false, "src": "4459:4:12", "valueSize": 1}}, {"dest": {"declaration": 9373, "isOffset": false, "isSlot": false, "src": "4364:4:12", "valueSize": 1}}, {"source": {"declaration": 9375, "isOffset": false, "isSlot": false, "src": "4423:6:12", "valueSize": 1}}, {"dest": {"declaration": 9373, "isOffset": false, "isSlot": false, "src": "4471:4:12", "valueSize": 1}}], "id": 9394, "nodeType": "InlineAssembly", "operations": "{\n length := sub(length, 32)\n let sEnd := add(source, length)\n let dEnd := add(dest, length)\n let last := mload(sEnd)\n for { } lt(source, sEnd) { }\n {\n mstore(dest, mload(source))\n source := add(source, 32)\n dest := add(dest, 32)\n }\n mstore(dEnd, last)\n}", "src": "3329:1278:12"}]}}]}, "id": 9400, "nodeType": "IfStatement", "src": "2007:4154:12", "trueBody": {"id": 9384, "nodeType": "Block", "src": "2024:453:12", "statements": [{"externalReferences": [{"length": {"declaration": 9377, "isOffset": false, "isSlot": false, "src": "2299:6:12", "valueSize": 1}}, {"dest": {"declaration": 9373, "isOffset": false, "isSlot": false, "src": "2402:4:12", "valueSize": 1}}, {"source": {"declaration": 9375, "isOffset": false, "isSlot": false, "src": "2347:6:12", "valueSize": 1}}, {"dest": {"declaration": 9373, "isOffset": false, "isSlot": false, "src": "2438:4:12", "valueSize": 1}}], "id": 9383, "nodeType": "InlineAssembly", "operations": "{\n let mask := sub(exp(256, sub(32, length)), 1)\n let s := and(mload(source), not(mask))\n let d := and(mload(dest), mask)\n mstore(dest, or(s, d))\n}", "src": "2239:228:12"}]}}]}, "documentation": "@dev Copies `length` bytes from memory location `source` to `dest`.\n @param dest memory address to copy bytes to.\n @param source memory address to copy bytes from.\n @param length number of bytes to copy.", "id": 9402, "implemented": true, "kind": "function", "modifiers": [], "name": "memCopy", "nodeType": "FunctionDefinition", "parameters": {"id": 9378, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9373, "name": "dest", "nodeType": "VariableDeclaration", "scope": 9402, "src": "1896:12:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9372, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1896:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9375, "name": "source", "nodeType": "VariableDeclaration", "scope": 9402, "src": "1918:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9374, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1918:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9377, "name": "length", "nodeType": "VariableDeclaration", "scope": 9402, "src": "1942:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9376, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1942:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1886:76:12"}, "returnParameters": {"id": 9379, "nodeType": "ParameterList", "parameters": [], "src": "1997:0:12"}, "scope": 9843, "src": "1870:4297:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9475, "nodeType": "Block", "src": "6634:942:12", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9413, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9406, "src": "6782:4:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 9414, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9408, "src": "6789:2:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6782:9:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9430, "nodeType": "IfStatement", "src": "6778:261:12", "trueBody": {"id": 9429, "nodeType": "Block", "src": "6793:246:12", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9421, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "6891:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11665, "src": "6891:49:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$11665_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 9423, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "FromLessThanOrEqualsToRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6891:80:12", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "id": 9424, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9406, "src": "6989:4:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 9425, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9408, "src": "7011:2:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9419, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "6829:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "6829:44:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$11665_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 9426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6829:198:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9416, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "6807:13:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "6807:21:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9427, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6807:221:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9428, "nodeType": "ExpressionStatement", "src": "6807:221:12"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9431, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9408, "src": "7052:2:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9432, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9404, "src": "7057:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7057:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7052:13:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9450, "nodeType": "IfStatement", "src": "7048:271:12", "trueBody": {"id": 9449, "nodeType": "Block", "src": "7067:252:12", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9440, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "7165:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9441, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11665, "src": "7165:49:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$11665_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 9442, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ToLessThanOrEqualsLengthRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7165:82:12", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "id": 9443, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9408, "src": "7265:2:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9444, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9404, "src": "7285:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7285:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9438, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "7103:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "7103:44:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$11665_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 9446, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7103:204:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9435, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "7081:13:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "7081:21:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9447, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7081:227:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9448, "nodeType": "ExpressionStatement", "src": "7081:227:12"}]}}, {"expression": {"argumentTypes": null, "id": 9458, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 9451, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9411, "src": "7387:6:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9454, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9408, "src": "7406:2:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"argumentTypes": null, "id": 9455, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9406, "src": "7411:4:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7406:9:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 9453, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "7396:9:12", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 9452, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7400:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 9457, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7396:20:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "src": "7387:29:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9459, "nodeType": "ExpressionStatement", "src": "7387:29:12"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 9461, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9411, "src": "7447:6:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9462, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "contentAddress", "nodeType": "MemberAccess", "referencedDeclaration": 9371, "src": "7447:21:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) pure returns (uint256)"}}, "id": 9463, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7447:23:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 9464, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9404, "src": "7484:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "contentAddress", "nodeType": "MemberAccess", "referencedDeclaration": 9371, "src": "7484:16:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) pure returns (uint256)"}}, "id": 9466, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7484:18:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "id": 9467, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9406, "src": "7505:4:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7484:25:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9469, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9411, "src": "7523:6:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7523:13:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 9460, "name": "memCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9402, "src": "7426:7:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256,uint256) pure"}}, "id": 9471, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7426:120:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9472, "nodeType": "ExpressionStatement", "src": "7426:120:12"}, {"expression": {"argumentTypes": null, "id": 9473, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9411, "src": "7563:6:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9412, "id": 9474, "nodeType": "Return", "src": "7556:13:12"}]}, "documentation": "@dev Returns a slices from a byte array.\n @param b The byte array to take a slice from.\n @param from The starting index for the slice (inclusive).\n @param to The final index for the slice (exclusive).\n @return result The slice containing bytes at indices [from, to)", "id": 9476, "implemented": true, "kind": "function", "modifiers": [], "name": "slice", "nodeType": "FunctionDefinition", "parameters": {"id": 9409, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9404, "name": "b", "nodeType": "VariableDeclaration", "scope": 9476, "src": "6499:14:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9403, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6499:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9406, "name": "from", "nodeType": "VariableDeclaration", "scope": 9476, "src": "6523:12:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9405, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6523:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9408, "name": "to", "nodeType": "VariableDeclaration", "scope": 9476, "src": "6545:10:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9407, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6545:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "6489:72:12"}, "returnParameters": {"id": 9412, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9411, "name": "result", "nodeType": "VariableDeclaration", "scope": 9476, "src": "6609:19:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9410, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6609:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "6608:21:12"}, "scope": 9843, "src": "6475:1101:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9528, "nodeType": "Block", "src": "8232:889:12", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9487, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9480, "src": "8380:4:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 9488, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9482, "src": "8387:2:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8380:9:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9504, "nodeType": "IfStatement", "src": "8376:261:12", "trueBody": {"id": 9503, "nodeType": "Block", "src": "8391:246:12", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9495, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "8489:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11665, "src": "8489:49:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$11665_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 9497, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "FromLessThanOrEqualsToRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8489:80:12", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "id": 9498, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9480, "src": "8587:4:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 9499, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9482, "src": "8609:2:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9493, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "8427:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "8427:44:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$11665_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 9500, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8427:198:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9490, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "8405:13:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "8405:21:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9501, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8405:221:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9502, "nodeType": "ExpressionStatement", "src": "8405:221:12"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9508, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9505, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9482, "src": "8650:2:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9506, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9478, "src": "8655:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8655:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8650:13:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9524, "nodeType": "IfStatement", "src": "8646:271:12", "trueBody": {"id": 9523, "nodeType": "Block", "src": "8665:252:12", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9514, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "8763:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11665, "src": "8763:49:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$11665_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 9516, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ToLessThanOrEqualsLengthRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8763:82:12", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "id": 9517, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9482, "src": "8863:2:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9518, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9478, "src": "8883:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8883:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9512, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "8701:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "8701:44:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$11665_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 9520, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8701:204:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9509, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "8679:13:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "8679:21:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9521, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8679:227:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9522, "nodeType": "ExpressionStatement", "src": "8679:227:12"}]}}, {"externalReferences": [{"result": {"declaration": 9485, "isOffset": false, "isSlot": false, "src": "9018:6:12", "valueSize": 1}}, {"b": {"declaration": 9478, "isOffset": false, "isSlot": false, "src": "9032:1:12", "valueSize": 1}}, {"from": {"declaration": 9480, "isOffset": false, "isSlot": false, "src": "9035:4:12", "valueSize": 1}}, {"result": {"declaration": 9485, "isOffset": false, "isSlot": false, "src": "9060:6:12", "valueSize": 1}}, {"to": {"declaration": 9482, "isOffset": false, "isSlot": false, "src": "9072:2:12", "valueSize": 1}}, {"from": {"declaration": 9480, "isOffset": false, "isSlot": false, "src": "9076:4:12", "valueSize": 1}}], "id": 9525, "nodeType": "InlineAssembly", "operations": "{\n result := add(b, from)\n mstore(result, sub(to, from))\n}", "src": "8995:97:12"}, {"expression": {"argumentTypes": null, "id": 9526, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9485, "src": "9108:6:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9486, "id": 9527, "nodeType": "Return", "src": "9101:13:12"}]}, "documentation": "@dev Returns a slice from a byte array without preserving the input.\n @param b The byte array to take a slice from. Will be destroyed in the process.\n @param from The starting index for the slice (inclusive).\n @param to The final index for the slice (exclusive).\n @return result The slice containing bytes at indices [from, to)\n @dev When `from == 0`, the original array will match the slice. In other cases its state will be corrupted.", "id": 9529, "implemented": true, "kind": "function", "modifiers": [], "name": "sliceDestructive", "nodeType": "FunctionDefinition", "parameters": {"id": 9483, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9478, "name": "b", "nodeType": "VariableDeclaration", "scope": 9529, "src": "8097:14:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9477, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8097:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9480, "name": "from", "nodeType": "VariableDeclaration", "scope": 9529, "src": "8121:12:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9479, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8121:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9482, "name": "to", "nodeType": "VariableDeclaration", "scope": 9529, "src": "8143:10:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9481, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8143:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "8087:72:12"}, "returnParameters": {"id": 9486, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9485, "name": "result", "nodeType": "VariableDeclaration", "scope": 9529, "src": "8207:19:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9484, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8207:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8206:21:12"}, "scope": 9843, "src": "8062:1059:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9568, "nodeType": "Block", "src": "9404:519:12", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9536, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9531, "src": "9418:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9418:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 9538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9430:1:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "9418:13:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9555, "nodeType": "IfStatement", "src": "9414:267:12", "trueBody": {"id": 9554, "nodeType": "Block", "src": "9433:248:12", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9545, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "9531:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11665, "src": "9531:49:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$11665_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 9547, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanZeroRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9531:79:12", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9548, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9531, "src": "9628:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9549, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9628:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "hexValue": "30", "id": 9550, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9654:1:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"argumentTypes": null, "id": 9543, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "9469:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "9469:44:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$11665_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 9551, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9469:200:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9540, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "9447:13:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "9447:21:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9552, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9447:223:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9553, "nodeType": "ExpressionStatement", "src": "9447:223:12"}]}}, {"expression": {"argumentTypes": null, "id": 9563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 9556, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9534, "src": "9719:6:12", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 9557, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9531, "src": "9728:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9562, "indexExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9558, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9531, "src": "9730:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9730:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"argumentTypes": null, "hexValue": "31", "id": 9560, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9741:1:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9730:12:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9728:15:12", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "9719:24:12", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 9564, "nodeType": "ExpressionStatement", "src": "9719:24:12"}, {"externalReferences": [{"b": {"declaration": 9531, "isOffset": false, "isSlot": false, "src": "9848:1:12", "valueSize": 1}}, {"b": {"declaration": 9531, "isOffset": false, "isSlot": false, "src": "9874:1:12", "valueSize": 1}}], "id": 9565, "nodeType": "InlineAssembly", "operations": "{\n let newLen := sub(mload(b), 1)\n mstore(b, newLen)\n}", "src": "9754:140:12"}, {"expression": {"argumentTypes": null, "id": 9566, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9534, "src": "9910:6:12", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "functionReturnParameters": 9535, "id": 9567, "nodeType": "Return", "src": "9903:13:12"}]}, "documentation": "@dev Pops the last byte off of a byte array by modifying its length.\n @param b Byte array that will be modified.\n @return The byte that was popped off.", "id": 9569, "implemented": true, "kind": "function", "modifiers": [], "name": "popLastByte", "nodeType": "FunctionDefinition", "parameters": {"id": 9532, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9531, "name": "b", "nodeType": "VariableDeclaration", "scope": 9569, "src": "9322:14:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9530, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9322:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9321:16:12"}, "returnParameters": {"id": 9535, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9534, "name": "result", "nodeType": "VariableDeclaration", "scope": 9569, "src": "9385:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}, "typeName": {"id": 9533, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "9385:6:12", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "value": null, "visibility": "internal"}], "src": "9384:15:12"}, "scope": 9843, "src": "9301:622:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9592, "nodeType": "Block", "src": "10273:266:12", "statements": [{"expression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 9590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9578, "name": "lhs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9571, "src": "10472:3:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10472:10:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9580, "name": "rhs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9573, "src": "10486:3:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10486:10:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10472:24:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 9589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9584, "name": "lhs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9571, "src": "10510:3:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 9583, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12085, "src": "10500:9:12", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 9585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10500:14:12", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9587, "name": "rhs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9573, "src": "10528:3:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 9586, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12085, "src": "10518:9:12", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 9588, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10518:14:12", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "10500:32:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10472:60:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 9577, "id": 9591, "nodeType": "Return", "src": "10465:67:12"}]}, "documentation": "@dev Tests equality of two byte arrays.\n @param lhs First byte array to compare.\n @param rhs Second byte array to compare.\n @return True if arrays are the same. False otherwise.", "id": 9593, "implemented": true, "kind": "function", "modifiers": [], "name": "equals", "nodeType": "FunctionDefinition", "parameters": {"id": 9574, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9571, "name": "lhs", "nodeType": "VariableDeclaration", "scope": 9593, "src": "10161:16:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9570, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10161:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9573, "name": "rhs", "nodeType": "VariableDeclaration", "scope": 9593, "src": "10187:16:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9572, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10187:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "10151:58:12"}, "returnParameters": {"id": 9577, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9576, "name": "equal", "nodeType": "VariableDeclaration", "scope": 9593, "src": "10257:10:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 9575, "name": "bool", "nodeType": "ElementaryTypeName", "src": "10257:4:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "10256:12:12"}, "scope": 9843, "src": "10136:403:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9633, "nodeType": "Block", "src": "10894:930:12", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9602, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9595, "src": "10908:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10908:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9604, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9597, "src": "10919:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3230", "id": 9605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10927:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "10919:10:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10908:21:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9625, "nodeType": "IfStatement", "src": "10904:321:12", "trueBody": {"id": 9624, "nodeType": "Block", "src": "10931:294:12", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9613, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "11029:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11665, "src": "11029:49:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$11665_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 9615, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanOrEqualsTwentyRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11029:89:12", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9616, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9595, "src": "11136:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11136:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9618, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9597, "src": "11162:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3230", "id": 9619, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11170:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "11162:10:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9611, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "10967:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9612, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "10967:44:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$11665_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 9621, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10967:246:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9608, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "10945:13:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "10945:21:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9622, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10945:269:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9623, "nodeType": "ExpressionStatement", "src": "10945:269:12"}]}}, {"expression": {"argumentTypes": null, "id": 9628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 9626, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9597, "src": "11462:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"argumentTypes": null, "hexValue": "3230", "id": 9627, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11471:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "11462:11:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9629, "nodeType": "ExpressionStatement", "src": "11462:11:12"}, {"externalReferences": [{"result": {"declaration": 9600, "isOffset": false, "isSlot": false, "src": "11706:6:12", "valueSize": 1}}, {"b": {"declaration": 9595, "isOffset": false, "isSlot": false, "src": "11730:1:12", "valueSize": 1}}, {"index": {"declaration": 9597, "isOffset": false, "isSlot": false, "src": "11733:5:12", "valueSize": 1}}], "id": 9630, "nodeType": "InlineAssembly", "operations": "{\n result := and(mload(add(b, index)), 0xffffffffffffffffffffffffffffffffffffffff)\n}", "src": "11526:269:12"}, {"expression": {"argumentTypes": null, "id": 9631, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9600, "src": "11811:6:12", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 9601, "id": 9632, "nodeType": "Return", "src": "11804:13:12"}]}, "documentation": "@dev Reads an address from a position in a byte array.\n @param b Byte array containing an address.\n @param index Index in byte array of address.\n @return address from byte array.", "id": 9634, "implemented": true, "kind": "function", "modifiers": [], "name": "readAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 9598, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9595, "name": "b", "nodeType": "VariableDeclaration", "scope": 9634, "src": "10783:14:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9594, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10783:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9597, "name": "index", "nodeType": "VariableDeclaration", "scope": 9634, "src": "10807:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10807:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "10773:53:12"}, "returnParameters": {"id": 9601, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9600, "name": "result", "nodeType": "VariableDeclaration", "scope": 9634, "src": "10874:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9599, "name": "address", "nodeType": "ElementaryTypeName", "src": "10874:7:12", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "10873:16:12"}, "scope": 9843, "src": "10753:1071:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9672, "nodeType": "Block", "src": "12193:1704:12", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9643, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9636, "src": "12207:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9644, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12207:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9645, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9638, "src": "12218:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3230", "id": 9646, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12226:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "12218:10:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12207:21:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9666, "nodeType": "IfStatement", "src": "12203:321:12", "trueBody": {"id": 9665, "nodeType": "Block", "src": "12230:294:12", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9654, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "12328:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11665, "src": "12328:49:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$11665_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 9656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanOrEqualsTwentyRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12328:89:12", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9657, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9636, "src": "12435:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12435:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9661, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9659, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9638, "src": "12461:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3230", "id": 9660, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12469:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "12461:10:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9652, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "12266:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9653, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "12266:44:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$11665_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 9662, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12266:246:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9649, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "12244:13:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9651, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "12244:21:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9663, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12244:269:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9664, "nodeType": "ExpressionStatement", "src": "12244:269:12"}]}}, {"expression": {"argumentTypes": null, "id": 9669, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 9667, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9638, "src": "12761:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"argumentTypes": null, "hexValue": "3230", "id": 9668, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12770:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "12761:11:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9670, "nodeType": "ExpressionStatement", "src": "12761:11:12"}, {"externalReferences": [{"input": {"declaration": 9640, "isOffset": false, "isSlot": false, "src": "13701:5:12", "valueSize": 1}}, {"b": {"declaration": 9636, "isOffset": false, "isSlot": false, "src": "13480:1:12", "valueSize": 1}}, {"index": {"declaration": 9638, "isOffset": false, "isSlot": false, "src": "13483:5:12", "valueSize": 1}}, {"input": {"declaration": 9640, "isOffset": false, "isSlot": false, "src": "13714:5:12", "valueSize": 1}}, {"b": {"declaration": 9636, "isOffset": false, "isSlot": false, "src": "13848:1:12", "valueSize": 1}}, {"index": {"declaration": 9638, "isOffset": false, "isSlot": false, "src": "13851:5:12", "valueSize": 1}}, {"input": {"declaration": 9640, "isOffset": false, "isSlot": false, "src": "13863:5:12", "valueSize": 1}}], "id": 9671, "nodeType": "InlineAssembly", "operations": "{\n let neighbors := and(mload(add(b, index)), 0xffffffffffffffffffffffff0000000000000000000000000000000000000000)\n input := and(input, 0xffffffffffffffffffffffffffffffffffffffff)\n mstore(add(b, index), xor(input, neighbors))\n}", "src": "12826:1065:12"}]}, "documentation": "@dev Writes an address into a specific position in a byte array.\n @param b Byte array to insert address into.\n @param index Index in byte array of address.\n @param input Address to put into byte array.", "id": 9673, "implemented": true, "kind": "function", "modifiers": [], "name": "writeAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 9641, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9636, "name": "b", "nodeType": "VariableDeclaration", "scope": 9673, "src": "12092:14:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9635, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12092:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9638, "name": "index", "nodeType": "VariableDeclaration", "scope": 9673, "src": "12116:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9637, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12116:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9640, "name": "input", "nodeType": "VariableDeclaration", "scope": 9673, "src": "12139:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9639, "name": "address", "nodeType": "ElementaryTypeName", "src": "12139:7:12", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "12082:76:12"}, "returnParameters": {"id": 9642, "nodeType": "ParameterList", "parameters": [], "src": "12193:0:12"}, "scope": 9843, "src": "12061:1836:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9713, "nodeType": "Block", "src": "14274:538:12", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9687, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9682, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9675, "src": "14288:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14288:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9686, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9684, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9677, "src": "14299:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 9685, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14307:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "14299:10:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "14288:21:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9705, "nodeType": "IfStatement", "src": "14284:297:12", "trueBody": {"id": 9704, "nodeType": "Block", "src": "14311:270:12", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9693, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "14409:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11665, "src": "14409:49:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$11665_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 9695, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanOrEqualsThirtyTwoRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14409:92:12", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9696, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9675, "src": "14519:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14519:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9700, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9698, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9677, "src": "14545:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 9699, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14553:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "14545:10:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9691, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "14347:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9692, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "14347:44:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$11665_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 9701, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14347:222:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9688, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "14325:13:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "14325:21:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9702, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14325:245:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9703, "nodeType": "ExpressionStatement", "src": "14325:245:12"}]}}, {"expression": {"argumentTypes": null, "id": 9708, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 9706, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9677, "src": "14652:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"argumentTypes": null, "hexValue": "3332", "id": 9707, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14661:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "14652:11:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9709, "nodeType": "ExpressionStatement", "src": "14652:11:12"}, {"externalReferences": [{"result": {"declaration": 9680, "isOffset": false, "isSlot": false, "src": "14743:6:12", "valueSize": 1}}, {"b": {"declaration": 9675, "isOffset": false, "isSlot": false, "src": "14763:1:12", "valueSize": 1}}, {"index": {"declaration": 9677, "isOffset": false, "isSlot": false, "src": "14766:5:12", "valueSize": 1}}], "id": 9710, "nodeType": "InlineAssembly", "operations": "{\n result := mload(add(b, index))\n}", "src": "14720:63:12"}, {"expression": {"argumentTypes": null, "id": 9711, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9680, "src": "14799:6:12", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 9681, "id": 9712, "nodeType": "Return", "src": "14792:13:12"}]}, "documentation": "@dev Reads a bytes32 value from a position in a byte array.\n @param b Byte array containing a bytes32 value.\n @param index Index in byte array of bytes32 value.\n @return bytes32 value from byte array.", "id": 9714, "implemented": true, "kind": "function", "modifiers": [], "name": "readBytes32", "nodeType": "FunctionDefinition", "parameters": {"id": 9678, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9675, "name": "b", "nodeType": "VariableDeclaration", "scope": 9714, "src": "14163:14:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9674, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "14163:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9677, "name": "index", "nodeType": "VariableDeclaration", "scope": 9714, "src": "14187:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9676, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14187:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "14153:53:12"}, "returnParameters": {"id": 9681, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9680, "name": "result", "nodeType": "VariableDeclaration", "scope": 9714, "src": "14254:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9679, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "14254:7:12", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "14253:16:12"}, "scope": 9843, "src": "14133:679:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9752, "nodeType": "Block", "src": "15180:513:12", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9728, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9723, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9716, "src": "15194:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9724, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15194:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9725, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9718, "src": "15205:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 9726, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15213:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "15205:10:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "15194:21:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9746, "nodeType": "IfStatement", "src": "15190:297:12", "trueBody": {"id": 9745, "nodeType": "Block", "src": "15217:270:12", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9734, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "15315:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11665, "src": "15315:49:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$11665_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 9736, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanOrEqualsThirtyTwoRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15315:92:12", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9737, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9716, "src": "15425:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9738, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15425:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9741, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9739, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9718, "src": "15451:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 9740, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15459:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "15451:10:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9732, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "15253:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "15253:44:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$11665_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 9742, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15253:222:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9729, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "15231:13:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "15231:21:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9743, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15231:245:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9744, "nodeType": "ExpressionStatement", "src": "15231:245:12"}]}}, {"expression": {"argumentTypes": null, "id": 9749, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 9747, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9718, "src": "15558:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"argumentTypes": null, "hexValue": "3332", "id": 9748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15567:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "15558:11:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9750, "nodeType": "ExpressionStatement", "src": "15558:11:12"}, {"externalReferences": [{"input": {"declaration": 9720, "isOffset": false, "isSlot": false, "src": "15671:5:12", "valueSize": 1}}, {"b": {"declaration": 9716, "isOffset": false, "isSlot": false, "src": "15660:1:12", "valueSize": 1}}, {"index": {"declaration": 9718, "isOffset": false, "isSlot": false, "src": "15663:5:12", "valueSize": 1}}], "id": 9751, "nodeType": "InlineAssembly", "operations": "{ mstore(add(b, index), input) }", "src": "15626:61:12"}]}, "documentation": "@dev Writes a bytes32 into a specific position in a byte array.\n @param b Byte array to insert into.\n @param index Index in byte array of .\n @param input bytes32 to put into byte array.", "id": 9753, "implemented": true, "kind": "function", "modifiers": [], "name": "writeBytes32", "nodeType": "FunctionDefinition", "parameters": {"id": 9721, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9716, "name": "b", "nodeType": "VariableDeclaration", "scope": 9753, "src": "15079:14:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9715, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "15079:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9718, "name": "index", "nodeType": "VariableDeclaration", "scope": 9753, "src": "15103:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9717, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "15103:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9720, "name": "input", "nodeType": "VariableDeclaration", "scope": 9753, "src": "15126:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 9719, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15126:7:12", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "15069:76:12"}, "returnParameters": {"id": 9722, "nodeType": "ParameterList", "parameters": [], "src": "15180:0:12"}, "scope": 9843, "src": "15048:645:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9773, "nodeType": "Block", "src": "16070:79:12", "statements": [{"expression": {"argumentTypes": null, "id": 9769, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 9762, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9760, "src": "16080:6:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9765, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9755, "src": "16109:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 9766, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9757, "src": "16112:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 9764, "name": "readBytes32", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9714, "src": "16097:11:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)"}}, "id": 9767, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16097:21:12", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 9763, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "16089:7:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": "uint256"}, "id": 9768, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16089:30:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16080:39:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9770, "nodeType": "ExpressionStatement", "src": "16080:39:12"}, {"expression": {"argumentTypes": null, "id": 9771, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9760, "src": "16136:6:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 9761, "id": 9772, "nodeType": "Return", "src": "16129:13:12"}]}, "documentation": "@dev Reads a uint256 value from a position in a byte array.\n @param b Byte array containing a uint256 value.\n @param index Index in byte array of uint256 value.\n @return uint256 value from byte array.", "id": 9774, "implemented": true, "kind": "function", "modifiers": [], "name": "readUint256", "nodeType": "FunctionDefinition", "parameters": {"id": 9758, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9755, "name": "b", "nodeType": "VariableDeclaration", "scope": 9774, "src": "15959:14:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9754, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "15959:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9757, "name": "index", "nodeType": "VariableDeclaration", "scope": 9774, "src": "15983:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9756, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "15983:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "15949:53:12"}, "returnParameters": {"id": 9761, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9760, "name": "result", "nodeType": "VariableDeclaration", "scope": 9774, "src": "16050:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9759, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16050:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "16049:16:12"}, "scope": 9843, "src": "15929:220:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9791, "nodeType": "Block", "src": "16517:55:12", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9784, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9776, "src": "16540:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 9785, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9778, "src": "16543:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9787, "name": "input", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9780, "src": "16558:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 9786, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "16550:7:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}, "id": 9788, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16550:14:12", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 9783, "name": "writeBytes32", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9753, "src": "16527:12:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (bytes memory,uint256,bytes32) pure"}}, "id": 9789, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16527:38:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9790, "nodeType": "ExpressionStatement", "src": "16527:38:12"}]}, "documentation": "@dev Writes a uint256 into a specific position in a byte array.\n @param b Byte array to insert into.\n @param index Index in byte array of .\n @param input uint256 to put into byte array.", "id": 9792, "implemented": true, "kind": "function", "modifiers": [], "name": "writeUint256", "nodeType": "FunctionDefinition", "parameters": {"id": 9781, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9776, "name": "b", "nodeType": "VariableDeclaration", "scope": 9792, "src": "16416:14:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9775, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "16416:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9778, "name": "index", "nodeType": "VariableDeclaration", "scope": 9792, "src": "16440:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9777, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16440:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9780, "name": "input", "nodeType": "VariableDeclaration", "scope": 9792, "src": "16463:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9779, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16463:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "16406:76:12"}, "returnParameters": {"id": 9782, "nodeType": "ParameterList", "parameters": [], "src": "16517:0:12"}, "scope": 9843, "src": "16385:187:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9832, "nodeType": "Block", "src": "16953:732:12", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9801, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9794, "src": "16967:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9802, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "16967:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9803, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9796, "src": "16978:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "34", "id": 9804, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "16986:1:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "16978:9:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16967:20:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9824, "nodeType": "IfStatement", "src": "16963:290:12", "trueBody": {"id": 9823, "nodeType": "Block", "src": "16989:264:12", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9812, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "17087:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11665, "src": "17087:49:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$11665_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 9814, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanOrEqualsFourRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "17087:87:12", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9815, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9794, "src": "17192:1:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 9816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "17192:8:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9817, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9796, "src": "17218:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "34", "id": 9818, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17226:1:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "17218:9:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 9810, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11689, "src": "17025:18:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$11689_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 9811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "17025:44:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$11665_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 9820, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17025:216:12", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9807, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "17003:13:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "17003:21:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9821, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17003:239:12", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9822, "nodeType": "ExpressionStatement", "src": "17003:239:12"}]}}, {"expression": {"argumentTypes": null, "id": 9827, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 9825, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9796, "src": "17320:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"argumentTypes": null, "hexValue": "3332", "id": 9826, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17329:2:12", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "17320:11:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9828, "nodeType": "ExpressionStatement", "src": "17320:11:12"}, {"externalReferences": [{"result": {"declaration": 9799, "isOffset": false, "isSlot": false, "src": "17410:6:12", "valueSize": 1}}, {"b": {"declaration": 9794, "isOffset": false, "isSlot": false, "src": "17430:1:12", "valueSize": 1}}, {"index": {"declaration": 9796, "isOffset": false, "isSlot": false, "src": "17433:5:12", "valueSize": 1}}, {"result": {"declaration": 9799, "isOffset": false, "isSlot": false, "src": "17557:6:12", "valueSize": 1}}, {"result": {"declaration": 9799, "isOffset": false, "isSlot": false, "src": "17571:6:12", "valueSize": 1}}], "id": 9829, "nodeType": "InlineAssembly", "operations": "{\n result := mload(add(b, index))\n result := and(result, 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000)\n}", "src": "17387:269:12"}, {"expression": {"argumentTypes": null, "id": 9830, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9799, "src": "17672:6:12", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 9800, "id": 9831, "nodeType": "Return", "src": "17665:13:12"}]}, "documentation": "@dev Reads an unpadded bytes4 value from a position in a byte array.\n @param b Byte array containing a bytes4 value.\n @param index Index in byte array of bytes4 value.\n @return bytes4 value from byte array.", "id": 9833, "implemented": true, "kind": "function", "modifiers": [], "name": "readBytes4", "nodeType": "FunctionDefinition", "parameters": {"id": 9797, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9794, "name": "b", "nodeType": "VariableDeclaration", "scope": 9833, "src": "16843:14:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9793, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "16843:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9796, "name": "index", "nodeType": "VariableDeclaration", "scope": 9833, "src": "16867:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9795, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16867:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "16833:53:12"}, "returnParameters": {"id": 9800, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9799, "name": "result", "nodeType": "VariableDeclaration", "scope": 9833, "src": "16934:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 9798, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "16934:6:12", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "16933:15:12"}, "scope": 9843, "src": "16814:871:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9841, "nodeType": "Block", "src": "18147:66:12", "statements": [{"externalReferences": [{"b": {"declaration": 9835, "isOffset": false, "isSlot": false, "src": "18187:1:12", "valueSize": 1}}, {"length": {"declaration": 9837, "isOffset": false, "isSlot": false, "src": "18190:6:12", "valueSize": 1}}], "id": 9840, "nodeType": "InlineAssembly", "operations": "{ mstore(b, length) }", "src": "18157:50:12"}]}, "documentation": "@dev Writes a new length to a byte array.\n Decreasing length will lead to removing the corresponding lower order bytes from the byte array.\n Increasing length may lead to appending adjacent in-memory bytes to the end of the byte array.\n @param b Bytes array to write new length to.\n @param length New length of byte array.", "id": 9842, "implemented": true, "kind": "function", "modifiers": [], "name": "writeLength", "nodeType": "FunctionDefinition", "parameters": {"id": 9838, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9835, "name": "b", "nodeType": "VariableDeclaration", "scope": 9842, "src": "18081:14:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9834, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "18081:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 9837, "name": "length", "nodeType": "VariableDeclaration", "scope": 9842, "src": "18097:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9836, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18097:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "18080:32:12"}, "returnParameters": {"id": 9839, "nodeType": "ParameterList", "parameters": [], "src": "18147:0:12"}, "scope": 9843, "src": "18060:153:12", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 9844, "src": "672:17543:12"}], "src": "580:17636:12"}, "id": 12}, "./contracts/exchange/contracts-utils/contracts/src/LibBytesRichErrors.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibBytesRichErrors.sol", "exportedSymbols": {"LibBytesRichErrors": [11689]}, "id": 11690, "nodeType": "SourceUnit", "nodes": [{"id": 11656, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:13"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 11689, "linearizedBaseContracts": [11689], "name": "LibBytesRichErrors", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "LibBytesRichErrors.InvalidByteOperationErrorCodes", "id": 11665, "members": [{"id": 11657, "name": "FromLessThanOrEqualsToRequired", "nodeType": "EnumValue", "src": "686:30:13"}, {"id": 11658, "name": "ToLessThanOrEqualsLengthRequired", "nodeType": "EnumValue", "src": "726:32:13"}, {"id": 11659, "name": "LengthGreaterThanZeroRequired", "nodeType": "EnumValue", "src": "768:29:13"}, {"id": 11660, "name": "LengthGreaterThanOrEqualsFourRequired", "nodeType": "EnumValue", "src": "807:37:13"}, {"id": 11661, "name": "LengthGreaterThanOrEqualsTwentyRequired", "nodeType": "EnumValue", "src": "854:39:13"}, {"id": 11662, "name": "LengthGreaterThanOrEqualsThirtyTwoRequired", "nodeType": "EnumValue", "src": "903:42:13"}, {"id": 11663, "name": "LengthGreaterThanOrEqualsNestedBytesLengthRequired", "nodeType": "EnumValue", "src": "955:50:13"}, {"id": 11664, "name": "DestinationLengthGreaterThanOrEqualSourceLengthRequired", "nodeType": "EnumValue", "src": "1015:55:13"}], "name": "InvalidByteOperationErrorCodes", "nodeType": "EnumDefinition", "src": "640:436:13"}, {"constant": true, "id": 11668, "name": "INVALID_BYTE_OPERATION_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 11689, "src": "1159:83:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 11666, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1159:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783238303036353935", "id": 11667, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1232:10:13", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_671114645_by_1", "typeString": "int_const 671114645"}, "value": "0x28006595"}, "visibility": "internal"}, {"body": {"id": 11687, "nodeType": "Block", "src": "1498:172:13", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 11681, "name": "INVALID_BYTE_OPERATION_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11668, "src": "1551:37:13", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 11682, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11670, "src": "1602:9:13", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "id": 11683, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11672, "src": "1625:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 11684, "name": "required", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11674, "src": "1645:8:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 11679, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "1515:3:13", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 11680, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1515:22:13", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 11685, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1515:148:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 11678, "id": 11686, "nodeType": "Return", "src": "1508:155:13"}]}, "documentation": null, "id": 11688, "implemented": true, "kind": "function", "modifiers": [], "name": "InvalidByteOperationError", "nodeType": "FunctionDefinition", "parameters": {"id": 11675, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11670, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 11688, "src": "1336:40:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, "typeName": {"contractScope": null, "id": 11669, "name": "InvalidByteOperationErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11665, "src": "1336:30:13", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$11665", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11672, "name": "offset", "nodeType": "VariableDeclaration", "scope": 11688, "src": "1386:14:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11671, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1386:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11674, "name": "required", "nodeType": "VariableDeclaration", "scope": 11688, "src": "1410:16:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11673, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1410:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1326:106:13"}, "returnParameters": {"id": 11678, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11677, "name": "", "nodeType": "VariableDeclaration", "scope": 11688, "src": "1480:12:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11676, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1480:5:13", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1479:14:13"}, "scope": 11689, "src": "1292:378:13", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 11690, "src": "606:1066:13"}], "src": "580:1093:13"}, "id": 13}, "./contracts/exchange/contracts-utils/contracts/src/LibEIP1271.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibEIP1271.sol", "exportedSymbols": {"LibEIP1271": [11600]}, "id": 11601, "nodeType": "SourceUnit", "nodes": [{"id": 11596, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:14"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 11600, "linearizedBaseContracts": [11600], "name": "LibEIP1271", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 11599, "name": "EIP1271_MAGIC_VALUE", "nodeType": "VariableDeclaration", "scope": 11600, "src": "729:55:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 11597, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "729:6:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783230633133623062", "id": 11598, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "774:10:14", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_549534475_by_1", "typeString": "int_const 549534475"}, "value": "0x20c13b0b"}, "visibility": "public"}], "scope": 11601, "src": "606:181:14"}], "src": "580:208:14"}, "id": 14}, "./contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol", "exportedSymbols": {"LibEIP712": [11640]}, "id": 11641, "nodeType": "SourceUnit", "nodes": [{"id": 11602, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:15"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 11640, "linearizedBaseContracts": [11640], "name": "LibEIP712", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 11605, "name": "_EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH", "nodeType": "VariableDeclaration", "scope": 11640, "src": "897:131:15", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11603, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "897:7:15", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"argumentTypes": null, "hexValue": "307838623733633363363962623866653364353132656363346366373539636337393233396637623137396230666661636161396137356435323262333934303066", "id": 11604, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "962:66:15", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1", "typeString": "int_const 6307...(69 digits omitted)...1551"}, "value": "0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"}, "visibility": "internal"}, {"body": {"id": 11625, "nodeType": "Block", "src": "1503:1045:15", "statements": [{"assignments": [11619], "declarations": [{"constant": false, "id": 11619, "name": "schemaHash", "nodeType": "VariableDeclaration", "scope": 11625, "src": "1513:18:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11618, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1513:7:15", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 11621, "initialValue": {"argumentTypes": null, "id": 11620, "name": "_EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11605, "src": "1534:36:15", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1513:57:15"}, {"externalReferences": [{"name": {"declaration": 11607, "isOffset": false, "isSlot": false, "src": "1986:4:15", "valueSize": 1}}, {"name": {"declaration": 11607, "isOffset": false, "isSlot": false, "src": "2003:4:15", "valueSize": 1}}, {"version": {"declaration": 11609, "isOffset": false, "isSlot": false, "src": "2055:7:15", "valueSize": 1}}, {"version": {"declaration": 11609, "isOffset": false, "isSlot": false, "src": "2075:7:15", "valueSize": 1}}, {"chainId": {"declaration": 11611, "isOffset": false, "isSlot": false, "src": "2371:7:15", "valueSize": 1}}, {"result": {"declaration": 11616, "isOffset": false, "isSlot": false, "src": "2477:6:15", "valueSize": 1}}, {"schemaHash": {"declaration": 11619, "isOffset": false, "isSlot": false, "src": "2228:10:15", "valueSize": 1}}, {"verifyingContract": {"declaration": 11613, "isOffset": false, "isSlot": false, "src": "2417:17:15", "valueSize": 1}}], "id": 11622, "nodeType": "InlineAssembly", "operations": "{\n let nameHash := keccak256(add(name, 32), mload(name))\n let versionHash := keccak256(add(version, 32), mload(version))\n let memPtr := mload(64)\n mstore(memPtr, schemaHash)\n mstore(add(memPtr, 32), nameHash)\n mstore(add(memPtr, 64), versionHash)\n mstore(add(memPtr, 96), chainId)\n mstore(add(memPtr, 128), verifyingContract)\n result := keccak256(memPtr, 160)\n}", "src": "1885:634:15"}, {"expression": {"argumentTypes": null, "id": 11623, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11616, "src": "2535:6:15", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 11617, "id": 11624, "nodeType": "Return", "src": "2528:13:15"}]}, "documentation": "@dev Calculates a EIP712 domain separator.\n @param name The EIP712 domain name.\n @param version The EIP712 domain version.\n @param verifyingContract The EIP712 verifying contract.\n @return EIP712 domain separator.", "id": 11626, "implemented": true, "kind": "function", "modifiers": [], "name": "hashEIP712Domain", "nodeType": "FunctionDefinition", "parameters": {"id": 11614, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11607, "name": "name", "nodeType": "VariableDeclaration", "scope": 11626, "src": "1320:18:15", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 11606, "name": "string", "nodeType": "ElementaryTypeName", "src": "1320:6:15", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11609, "name": "version", "nodeType": "VariableDeclaration", "scope": 11626, "src": "1348:21:15", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 11608, "name": "string", "nodeType": "ElementaryTypeName", "src": "1348:6:15", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11611, "name": "chainId", "nodeType": "VariableDeclaration", "scope": 11626, "src": "1379:15:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11610, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1379:7:15", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11613, "name": "verifyingContract", "nodeType": "VariableDeclaration", "scope": 11626, "src": "1404:25:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11612, "name": "address", "nodeType": "ElementaryTypeName", "src": "1404:7:15", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1310:125:15"}, "returnParameters": {"id": 11617, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11616, "name": "result", "nodeType": "VariableDeclaration", "scope": 11626, "src": "1483:14:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11615, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1483:7:15", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "1482:16:15"}, "scope": 11640, "src": "1285:1263:15", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11638, "nodeType": "Block", "src": "3029:750:15", "statements": [{"externalReferences": [{"hashStruct": {"declaration": 11630, "isOffset": false, "isSlot": false, "src": "3590:10:15", "valueSize": 1}}, {"result": {"declaration": 11633, "isOffset": false, "isSlot": false, "src": "3709:6:15", "valueSize": 1}}, {"eip712DomainHash": {"declaration": 11628, "isOffset": false, "isSlot": false, "src": "3471:16:15", "valueSize": 1}}], "id": 11635, "nodeType": "InlineAssembly", "operations": "{\n let memPtr := mload(64)\n mstore(memPtr, 0x1901000000000000000000000000000000000000000000000000000000000000)\n mstore(add(memPtr, 2), eip712DomainHash)\n mstore(add(memPtr, 34), hashStruct)\n result := keccak256(memPtr, 66)\n}", "src": "3235:515:15"}, {"expression": {"argumentTypes": null, "id": 11636, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11633, "src": "3766:6:15", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 11634, "id": 11637, "nodeType": "Return", "src": "3759:13:15"}]}, "documentation": "@dev Calculates EIP712 encoding for a hash struct with a given domain hash.\n @param eip712DomainHash Hash of the domain domain separator data, computed\n with getDomainHash().\n @param hashStruct The EIP712 hash struct.\n @return EIP712 hash applied to the given EIP712 Domain.", "id": 11639, "implemented": true, "kind": "function", "modifiers": [], "name": "hashEIP712Message", "nodeType": "FunctionDefinition", "parameters": {"id": 11631, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11628, "name": "eip712DomainHash", "nodeType": "VariableDeclaration", "scope": 11639, "src": "2916:24:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11627, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2916:7:15", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11630, "name": "hashStruct", "nodeType": "VariableDeclaration", "scope": 11639, "src": "2942:18:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11629, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2942:7:15", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "2915:46:15"}, "returnParameters": {"id": 11634, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11633, "name": "result", "nodeType": "VariableDeclaration", "scope": 11639, "src": "3009:14:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 11632, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3009:7:15", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "3008:16:15"}, "scope": 11640, "src": "2889:890:15", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 11641, "src": "606:3175:15"}], "src": "580:3202:15"}, "id": 15}, "./contracts/exchange/contracts-utils/contracts/src/LibOwnableRichErrors.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibOwnableRichErrors.sol", "exportedSymbols": {"LibOwnableRichErrors": [11723]}, "id": 11724, "nodeType": "SourceUnit", "nodes": [{"id": 11691, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "0:23:16"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 11723, "linearizedBaseContracts": [11723], "name": "LibOwnableRichErrors", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 11694, "name": "ONLY_OWNER_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 11723, "src": "122:71:16", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 11692, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "122:6:16", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783164653435616431", "id": 11693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "183:10:16", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_501504721_by_1", "typeString": "int_const 501504721"}, "value": "0x1de45ad1"}, "visibility": "internal"}, {"constant": true, "id": 11697, "name": "TRANSFER_OWNER_TO_ZERO_ERROR_BYTES", "nodeType": "VariableDeclaration", "scope": 11723, "src": "255:82:16", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes"}, "typeName": {"id": 11695, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "255:5:16", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": {"argumentTypes": null, "hexValue": "e69edc3e", "id": 11696, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "324:13:16", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_9637f66617eda711104d7a6f14a0968da37d2d61952228df7a8d4b6bb7e54b41", "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)"}, "value": null}, "visibility": "internal"}, {"body": {"id": 11713, "nodeType": "Block", "src": "529:134:16", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 11708, "name": "ONLY_OWNER_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11694, "src": "582:25:16", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 11709, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11699, "src": "621:6:16", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 11710, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11701, "src": "641:5:16", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 11706, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "546:3:16", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 11707, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "546:22:16", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 11711, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "546:110:16", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 11705, "id": 11712, "nodeType": "Return", "src": "539:117:16"}]}, "documentation": null, "id": 11714, "implemented": true, "kind": "function", "modifiers": [], "name": "OnlyOwnerError", "nodeType": "FunctionDefinition", "parameters": {"id": 11702, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11699, "name": "sender", "nodeType": "VariableDeclaration", "scope": 11714, "src": "420:14:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11698, "name": "address", "nodeType": "ElementaryTypeName", "src": "420:7:16", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11701, "name": "owner", "nodeType": "VariableDeclaration", "scope": 11714, "src": "444:13:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11700, "name": "address", "nodeType": "ElementaryTypeName", "src": "444:7:16", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "410:53:16"}, "returnParameters": {"id": 11705, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11704, "name": "", "nodeType": "VariableDeclaration", "scope": 11714, "src": "511:12:16", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11703, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "511:5:16", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "510:14:16"}, "scope": 11723, "src": "387:276:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11721, "nodeType": "Block", "src": "770:58:16", "statements": [{"expression": {"argumentTypes": null, "id": 11719, "name": "TRANSFER_OWNER_TO_ZERO_ERROR_BYTES", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11697, "src": "787:34:16", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "functionReturnParameters": 11718, "id": 11720, "nodeType": "Return", "src": "780:41:16"}]}, "documentation": null, "id": 11722, "implemented": true, "kind": "function", "modifiers": [], "name": "TransferOwnerToZeroError", "nodeType": "FunctionDefinition", "parameters": {"id": 11715, "nodeType": "ParameterList", "parameters": [], "src": "702:2:16"}, "returnParameters": {"id": 11718, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11717, "name": "", "nodeType": "VariableDeclaration", "scope": 11722, "src": "752:12:16", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11716, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "752:5:16", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "751:14:16"}, "scope": 11723, "src": "669:159:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 11724, "src": "26:804:16"}], "src": "0:831:16"}, "id": 16}, "./contracts/exchange/contracts-utils/contracts/src/LibReentrancyGuardRichErrors.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibReentrancyGuardRichErrors.sol", "exportedSymbols": {"LibReentrancyGuardRichErrors": [12076]}, "id": 12077, "nodeType": "SourceUnit", "nodes": [{"id": 12064, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:17"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 12076, "linearizedBaseContracts": [12076], "name": "LibReentrancyGuardRichErrors", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 12067, "name": "ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES", "nodeType": "VariableDeclaration", "scope": 12076, "src": "703:87:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes"}, "typeName": {"id": 12065, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "703:5:17", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": {"argumentTypes": null, "hexValue": "0c3b823f", "id": 12066, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "777:13:17", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_d261d2e815d8c39d72336aaac01e7d0fb51ea229fc428ddc5ef0f3800568525d", "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)"}, "value": null}, "visibility": "internal"}, {"body": {"id": 12074, "nodeType": "Block", "src": "939:63:17", "statements": [{"expression": {"argumentTypes": null, "id": 12072, "name": "ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12067, "src": "956:39:17", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "functionReturnParameters": 12071, "id": 12073, "nodeType": "Return", "src": "949:46:17"}]}, "documentation": null, "id": 12075, "implemented": true, "kind": "function", "modifiers": [], "name": "IllegalReentrancyError", "nodeType": "FunctionDefinition", "parameters": {"id": 12068, "nodeType": "ParameterList", "parameters": [], "src": "871:2:17"}, "returnParameters": {"id": 12071, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12070, "name": "", "nodeType": "VariableDeclaration", "scope": 12075, "src": "921:12:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 12069, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "921:5:17", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "920:14:17"}, "scope": 12076, "src": "840:162:17", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 12077, "src": "606:398:17"}], "src": "580:425:17"}, "id": 17}, "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "exportedSymbols": {"LibRichErrors": [9872]}, "id": 9873, "nodeType": "SourceUnit", "nodes": [{"id": 9845, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:18"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 9872, "linearizedBaseContracts": [9872], "name": "LibRichErrors", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 9848, "name": "STANDARD_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 9872, "src": "677:69:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 9846, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "677:6:18", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783038633337396130", "id": 9847, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "736:10:18", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_147028384_by_1", "typeString": "int_const 147028384"}, "value": "0x08c379a0"}, "visibility": "internal"}, {"body": {"id": 9863, "nodeType": "Block", "src": "1229:121:18", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9857, "name": "STANDARD_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9848, "src": "1282:23:18", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 9859, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9850, "src": "1325:7:18", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 9858, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1319:5:18", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}, "id": 9860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1319:14:18", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9855, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "1246:3:18", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 9856, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1246:22:18", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 9861, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1246:97:18", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 9854, "id": 9862, "nodeType": "Return", "src": "1239:104:18"}]}, "documentation": "@dev ABI encode a standard, string revert error payload.\n This is the same payload that would be included by a `revert(string)`\n solidity statement. It has the function signature `Error(string)`.\n @param message The error string.\n @return The ABI encoded error.", "id": 9864, "implemented": true, "kind": "function", "modifiers": [], "name": "StandardError", "nodeType": "FunctionDefinition", "parameters": {"id": 9851, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9850, "name": "message", "nodeType": "VariableDeclaration", "scope": 9864, "src": "1136:21:18", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 9849, "name": "string", "nodeType": "ElementaryTypeName", "src": "1136:6:18", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "value": null, "visibility": "internal"}], "src": "1126:37:18"}, "returnParameters": {"id": 9854, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9853, "name": "", "nodeType": "VariableDeclaration", "scope": 9864, "src": "1211:12:18", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9852, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1211:5:18", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1210:14:18"}, "scope": 9872, "src": "1104:246:18", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 9870, "nodeType": "Block", "src": "1586:95:18", "statements": [{"externalReferences": [{"errorData": {"declaration": 9866, "isOffset": false, "isSlot": false, "src": "1654:9:18", "valueSize": 1}}, {"errorData": {"declaration": 9866, "isOffset": false, "isSlot": false, "src": "1630:9:18", "valueSize": 1}}], "id": 9869, "nodeType": "InlineAssembly", "operations": "{\n revert(add(errorData, 0x20), mload(errorData))\n}", "src": "1596:79:18"}]}, "documentation": "@dev Reverts an encoded rich revert reason `errorData`.\n @param errorData ABI encoded error data.", "id": 9871, "implemented": true, "kind": "function", "modifiers": [], "name": "rrevert", "nodeType": "FunctionDefinition", "parameters": {"id": 9867, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9866, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 9871, "src": "1528:22:18", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 9865, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1528:5:18", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1527:24:18"}, "returnParameters": {"id": 9868, "nodeType": "ParameterList", "parameters": [], "src": "1586:0:18"}, "scope": 9872, "src": "1511:170:18", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 9873, "src": "606:1077:18"}], "src": "580:1104:18"}, "id": 18}, "./contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol", "exportedSymbols": {"LibSafeMath": [11216]}, "id": 11217, "nodeType": "SourceUnit", "nodes": [{"id": 11030, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "0:23:19"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "./LibRichErrors.sol", "id": 11031, "nodeType": "ImportDirective", "scope": 11217, "sourceUnit": 9873, "src": "25:29:19", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibSafeMathRichErrors.sol", "file": "./LibSafeMathRichErrors.sol", "id": 11032, "nodeType": "ImportDirective", "scope": 11217, "sourceUnit": 11830, "src": "55:37:19", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 11216, "linearizedBaseContracts": [11216], "name": "LibSafeMath", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 11076, "nodeType": "Block", "src": "221:349:19", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11041, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11034, "src": "235:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 11042, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "240:1:19", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "235:6:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 11047, "nodeType": "IfStatement", "src": "231:45:19", "trueBody": {"id": 11046, "nodeType": "Block", "src": "243:33:19", "statements": [{"expression": {"argumentTypes": null, "hexValue": "30", "id": 11044, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "264:1:19", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "functionReturnParameters": 11040, "id": 11045, "nodeType": "Return", "src": "257:8:19"}]}}, {"assignments": [11049], "declarations": [{"constant": false, "id": 11049, "name": "c", "nodeType": "VariableDeclaration", "scope": 11076, "src": "285:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "285:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 11053, "initialValue": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11050, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11034, "src": "297:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"argumentTypes": null, "id": 11051, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11036, "src": "301:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "297:5:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "285:17:19"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11054, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11049, "src": "316:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"argumentTypes": null, "id": 11055, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11034, "src": "320:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "316:5:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 11057, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11036, "src": "325:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "316:10:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 11073, "nodeType": "IfStatement", "src": "312:234:19", "trueBody": {"id": 11072, "nodeType": "Block", "src": "328:218:19", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11064, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11829, "src": "421:21:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$11829_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 11065, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BinOpErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11787, "src": "421:37:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BinOpErrorCodes_$11787_$", "typeString": "type(enum LibSafeMathRichErrors.BinOpErrorCodes)"}}, "id": 11066, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "MULTIPLICATION_OVERFLOW", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "421:61:19", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, {"argumentTypes": null, "id": 11067, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11034, "src": "500:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 11068, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11036, "src": "519:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 11062, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11829, "src": "364:21:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$11829_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 11063, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Uint256BinOpError", "nodeType": "MemberAccess", "referencedDeclaration": 11811, "src": "364:39:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BinOpErrorCodes_$11787_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibSafeMathRichErrors.BinOpErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 11069, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "364:170:19", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 11059, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "342:13:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 11061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "342:21:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 11070, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "342:193:19", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11071, "nodeType": "ExpressionStatement", "src": "342:193:19"}]}}, {"expression": {"argumentTypes": null, "id": 11074, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11049, "src": "562:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 11040, "id": 11075, "nodeType": "Return", "src": "555:8:19"}]}, "documentation": null, "id": 11077, "implemented": true, "kind": "function", "modifiers": [], "name": "safeMul", "nodeType": "FunctionDefinition", "parameters": {"id": 11037, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11034, "name": "a", "nodeType": "VariableDeclaration", "scope": 11077, "src": "139:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11033, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "139:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11036, "name": "b", "nodeType": "VariableDeclaration", "scope": 11077, "src": "150:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11035, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "150:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "138:22:19"}, "returnParameters": {"id": 11040, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11039, "name": "", "nodeType": "VariableDeclaration", "scope": 11077, "src": "208:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11038, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "208:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "207:9:19"}, "scope": 11216, "src": "122:448:19", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11112, "nodeType": "Block", "src": "675:284:19", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11088, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11086, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11081, "src": "689:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 11087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "694:1:19", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "689:6:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 11103, "nodeType": "IfStatement", "src": "685:223:19", "trueBody": {"id": 11102, "nodeType": "Block", "src": "697:211:19", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11094, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11829, "src": "790:21:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$11829_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 11095, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BinOpErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11787, "src": "790:37:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BinOpErrorCodes_$11787_$", "typeString": "type(enum LibSafeMathRichErrors.BinOpErrorCodes)"}}, "id": 11096, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "DIVISION_BY_ZERO", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "790:54:19", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, {"argumentTypes": null, "id": 11097, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11079, "src": "862:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 11098, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11081, "src": "881:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 11092, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11829, "src": "733:21:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$11829_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 11093, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Uint256BinOpError", "nodeType": "MemberAccess", "referencedDeclaration": 11811, "src": "733:39:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BinOpErrorCodes_$11787_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibSafeMathRichErrors.BinOpErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 11099, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "733:163:19", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 11089, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "711:13:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 11091, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "711:21:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 11100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "711:186:19", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11101, "nodeType": "ExpressionStatement", "src": "711:186:19"}]}}, {"assignments": [11105], "declarations": [{"constant": false, "id": 11105, "name": "c", "nodeType": "VariableDeclaration", "scope": 11112, "src": "917:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11104, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "917:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 11109, "initialValue": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11108, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11106, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11079, "src": "929:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"argumentTypes": null, "id": 11107, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11081, "src": "933:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "929:5:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "917:17:19"}, {"expression": {"argumentTypes": null, "id": 11110, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11105, "src": "951:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 11085, "id": 11111, "nodeType": "Return", "src": "944:8:19"}]}, "documentation": null, "id": 11113, "implemented": true, "kind": "function", "modifiers": [], "name": "safeDiv", "nodeType": "FunctionDefinition", "parameters": {"id": 11082, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11079, "name": "a", "nodeType": "VariableDeclaration", "scope": 11113, "src": "593:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11078, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "593:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11081, "name": "b", "nodeType": "VariableDeclaration", "scope": 11113, "src": "604:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11080, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "604:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "592:22:19"}, "returnParameters": {"id": 11085, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11084, "name": "", "nodeType": "VariableDeclaration", "scope": 11113, "src": "662:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11083, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "662:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "661:9:19"}, "scope": 11216, "src": "576:383:19", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11144, "nodeType": "Block", "src": "1064:265:19", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11122, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11117, "src": "1078:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 11123, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11115, "src": "1082:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1078:5:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 11139, "nodeType": "IfStatement", "src": "1074:227:19", "trueBody": {"id": 11138, "nodeType": "Block", "src": "1085:216:19", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11130, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11829, "src": "1178:21:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$11829_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 11131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BinOpErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11787, "src": "1178:37:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BinOpErrorCodes_$11787_$", "typeString": "type(enum LibSafeMathRichErrors.BinOpErrorCodes)"}}, "id": 11132, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "SUBTRACTION_UNDERFLOW", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1178:59:19", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, {"argumentTypes": null, "id": 11133, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11115, "src": "1255:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 11134, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11117, "src": "1274:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 11128, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11829, "src": "1121:21:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$11829_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 11129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Uint256BinOpError", "nodeType": "MemberAccess", "referencedDeclaration": 11811, "src": "1121:39:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BinOpErrorCodes_$11787_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibSafeMathRichErrors.BinOpErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 11135, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1121:168:19", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 11125, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "1099:13:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 11127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "1099:21:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 11136, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1099:191:19", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11137, "nodeType": "ExpressionStatement", "src": "1099:191:19"}]}}, {"expression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11140, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11115, "src": "1317:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"argumentTypes": null, "id": 11141, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11117, "src": "1321:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1317:5:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 11121, "id": 11143, "nodeType": "Return", "src": "1310:12:19"}]}, "documentation": null, "id": 11145, "implemented": true, "kind": "function", "modifiers": [], "name": "safeSub", "nodeType": "FunctionDefinition", "parameters": {"id": 11118, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11115, "name": "a", "nodeType": "VariableDeclaration", "scope": 11145, "src": "982:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11114, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "982:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11117, "name": "b", "nodeType": "VariableDeclaration", "scope": 11145, "src": "993:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11116, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "993:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "981:22:19"}, "returnParameters": {"id": 11121, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11120, "name": "", "nodeType": "VariableDeclaration", "scope": 11145, "src": "1051:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11119, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1051:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1050:9:19"}, "scope": 11216, "src": "965:364:19", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11180, "nodeType": "Block", "src": "1434:284:19", "statements": [{"assignments": [11155], "declarations": [{"constant": false, "id": 11155, "name": "c", "nodeType": "VariableDeclaration", "scope": 11180, "src": "1444:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11154, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1444:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 11159, "initialValue": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11156, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11147, "src": "1456:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "id": 11157, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11149, "src": "1460:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1456:5:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1444:17:19"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11160, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11155, "src": "1475:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "id": 11161, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11147, "src": "1479:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1475:5:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 11177, "nodeType": "IfStatement", "src": "1471:223:19", "trueBody": {"id": 11176, "nodeType": "Block", "src": "1482:212:19", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11168, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11829, "src": "1575:21:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$11829_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 11169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BinOpErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 11787, "src": "1575:37:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BinOpErrorCodes_$11787_$", "typeString": "type(enum LibSafeMathRichErrors.BinOpErrorCodes)"}}, "id": 11170, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ADDITION_OVERFLOW", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1575:55:19", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, {"argumentTypes": null, "id": 11171, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11147, "src": "1648:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 11172, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11149, "src": "1667:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 11166, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11829, "src": "1518:21:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$11829_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 11167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Uint256BinOpError", "nodeType": "MemberAccess", "referencedDeclaration": 11811, "src": "1518:39:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BinOpErrorCodes_$11787_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibSafeMathRichErrors.BinOpErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 11173, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1518:164:19", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 11163, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "1496:13:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 11165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "1496:21:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 11174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1496:187:19", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11175, "nodeType": "ExpressionStatement", "src": "1496:187:19"}]}}, {"expression": {"argumentTypes": null, "id": 11178, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11155, "src": "1710:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 11153, "id": 11179, "nodeType": "Return", "src": "1703:8:19"}]}, "documentation": null, "id": 11181, "implemented": true, "kind": "function", "modifiers": [], "name": "safeAdd", "nodeType": "FunctionDefinition", "parameters": {"id": 11150, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11147, "name": "a", "nodeType": "VariableDeclaration", "scope": 11181, "src": "1352:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11146, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1352:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11149, "name": "b", "nodeType": "VariableDeclaration", "scope": 11181, "src": "1363:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11148, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1363:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1351:22:19"}, "returnParameters": {"id": 11153, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11152, "name": "", "nodeType": "VariableDeclaration", "scope": 11181, "src": "1421:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11151, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1421:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1420:9:19"}, "scope": 11216, "src": "1335:383:19", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11197, "nodeType": "Block", "src": "1822:38:19", "statements": [{"expression": {"argumentTypes": null, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11190, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11183, "src": "1839:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "id": 11191, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11185, "src": "1844:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1839:6:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"argumentTypes": null, "id": 11194, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11185, "src": "1852:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 11195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1839:14:19", "trueExpression": {"argumentTypes": null, "id": 11193, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11183, "src": "1848:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 11189, "id": 11196, "nodeType": "Return", "src": "1832:21:19"}]}, "documentation": null, "id": 11198, "implemented": true, "kind": "function", "modifiers": [], "name": "max256", "nodeType": "FunctionDefinition", "parameters": {"id": 11186, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11183, "name": "a", "nodeType": "VariableDeclaration", "scope": 11198, "src": "1740:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11182, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1740:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11185, "name": "b", "nodeType": "VariableDeclaration", "scope": 11198, "src": "1751:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11184, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1751:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1739:22:19"}, "returnParameters": {"id": 11189, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11188, "name": "", "nodeType": "VariableDeclaration", "scope": 11198, "src": "1809:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11187, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1809:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1808:9:19"}, "scope": 11216, "src": "1724:136:19", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11214, "nodeType": "Block", "src": "1964:37:19", "statements": [{"expression": {"argumentTypes": null, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11207, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11200, "src": "1981:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "id": 11208, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11202, "src": "1985:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1981:5:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"argumentTypes": null, "id": 11211, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11202, "src": "1993:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 11212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1981:13:19", "trueExpression": {"argumentTypes": null, "id": 11210, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11200, "src": "1989:1:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 11206, "id": 11213, "nodeType": "Return", "src": "1974:20:19"}]}, "documentation": null, "id": 11215, "implemented": true, "kind": "function", "modifiers": [], "name": "min256", "nodeType": "FunctionDefinition", "parameters": {"id": 11203, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11200, "name": "a", "nodeType": "VariableDeclaration", "scope": 11215, "src": "1882:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11199, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1882:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11202, "name": "b", "nodeType": "VariableDeclaration", "scope": 11215, "src": "1893:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11201, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1893:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1881:22:19"}, "returnParameters": {"id": 11206, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11205, "name": "", "nodeType": "VariableDeclaration", "scope": 11215, "src": "1951:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11204, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1951:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1950:9:19"}, "scope": 11216, "src": "1866:135:19", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 11217, "src": "95:1908:19"}], "src": "0:2004:19"}, "id": 19}, "./contracts/exchange/contracts-utils/contracts/src/LibSafeMathRichErrors.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibSafeMathRichErrors.sol", "exportedSymbols": {"LibSafeMathRichErrors": [11829]}, "id": 11830, "nodeType": "SourceUnit", "nodes": [{"id": 11776, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "0:23:20"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 11829, "linearizedBaseContracts": [11829], "name": "LibSafeMathRichErrors", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 11779, "name": "UINT256_BINOP_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 11829, "src": "132:74:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 11777, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "132:6:20", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786539343663316262", "id": 11778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "196:10:20", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3913728443_by_1", "typeString": "int_const 3913728443"}, "value": "0xe946c1bb"}, "visibility": "internal"}, {"constant": true, "id": 11782, "name": "UINT256_DOWNCAST_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 11829, "src": "277:77:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 11780, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "277:6:20", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786339393661663762", "id": 11781, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "344:10:20", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3382095739_by_1", "typeString": "int_const 3382095739"}, "value": "0xc996af7b"}, "visibility": "internal"}, {"canonicalName": "LibSafeMathRichErrors.BinOpErrorCodes", "id": 11787, "members": [{"id": 11783, "name": "ADDITION_OVERFLOW", "nodeType": "EnumValue", "src": "392:17:20"}, {"id": 11784, "name": "MULTIPLICATION_OVERFLOW", "nodeType": "EnumValue", "src": "419:23:20"}, {"id": 11785, "name": "SUBTRACTION_UNDERFLOW", "nodeType": "EnumValue", "src": "452:21:20"}, {"id": 11786, "name": "DIVISION_BY_ZERO", "nodeType": "EnumValue", "src": "483:16:20"}], "name": "BinOpErrorCodes", "nodeType": "EnumDefinition", "src": "361:144:20"}, {"canonicalName": "LibSafeMathRichErrors.DowncastErrorCodes", "id": 11791, "members": [{"id": 11788, "name": "VALUE_TOO_LARGE_TO_DOWNCAST_TO_UINT32", "nodeType": "EnumValue", "src": "545:37:20"}, {"id": 11789, "name": "VALUE_TOO_LARGE_TO_DOWNCAST_TO_UINT64", "nodeType": "EnumValue", "src": "592:37:20"}, {"id": 11790, "name": "VALUE_TOO_LARGE_TO_DOWNCAST_TO_UINT96", "nodeType": "EnumValue", "src": "639:37:20"}], "name": "DowncastErrorCodes", "nodeType": "EnumDefinition", "src": "511:171:20"}, {"body": {"id": 11810, "nodeType": "Block", "src": "902:151:20", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 11804, "name": "UINT256_BINOP_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11779, "src": "955:28:20", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 11805, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11793, "src": "997:9:20", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, {"argumentTypes": null, "id": 11806, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11795, "src": "1020:1:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 11807, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11797, "src": "1035:1:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 11802, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "919:3:20", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 11803, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "919:22:20", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 11808, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "919:127:20", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 11801, "id": 11809, "nodeType": "Return", "src": "912:134:20"}]}, "documentation": null, "id": 11811, "implemented": true, "kind": "function", "modifiers": [], "name": "Uint256BinOpError", "nodeType": "FunctionDefinition", "parameters": {"id": 11798, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11793, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 11811, "src": "767:25:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, "typeName": {"contractScope": null, "id": 11792, "name": "BinOpErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11787, "src": "767:15:20", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$11787", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11795, "name": "a", "nodeType": "VariableDeclaration", "scope": 11811, "src": "802:9:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11794, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "802:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11797, "name": "b", "nodeType": "VariableDeclaration", "scope": 11811, "src": "821:9:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11796, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "821:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "757:79:20"}, "returnParameters": {"id": 11801, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11800, "name": "", "nodeType": "VariableDeclaration", "scope": 11811, "src": "884:12:20", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11799, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "884:5:20", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "883:14:20"}, "scope": 11829, "src": "731:322:20", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11827, "nodeType": "Block", "src": "1217:139:20", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 11822, "name": "UINT256_DOWNCAST_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11782, "src": "1270:31:20", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 11823, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11813, "src": "1315:9:20", "typeDescriptions": {"typeIdentifier": "t_enum$_DowncastErrorCodes_$11791", "typeString": "enum LibSafeMathRichErrors.DowncastErrorCodes"}}, {"argumentTypes": null, "id": 11824, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11815, "src": "1338:1:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_DowncastErrorCodes_$11791", "typeString": "enum LibSafeMathRichErrors.DowncastErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 11820, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "1234:3:20", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 11821, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1234:22:20", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 11825, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1234:115:20", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 11819, "id": 11826, "nodeType": "Return", "src": "1227:122:20"}]}, "documentation": null, "id": 11828, "implemented": true, "kind": "function", "modifiers": [], "name": "Uint256DowncastError", "nodeType": "FunctionDefinition", "parameters": {"id": 11816, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11813, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 11828, "src": "1098:28:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_DowncastErrorCodes_$11791", "typeString": "enum LibSafeMathRichErrors.DowncastErrorCodes"}, "typeName": {"contractScope": null, "id": 11812, "name": "DowncastErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11791, "src": "1098:18:20", "typeDescriptions": {"typeIdentifier": "t_enum$_DowncastErrorCodes_$11791", "typeString": "enum LibSafeMathRichErrors.DowncastErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11815, "name": "a", "nodeType": "VariableDeclaration", "scope": 11828, "src": "1136:9:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11814, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1088:63:20"}, "returnParameters": {"id": 11819, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11818, "name": "", "nodeType": "VariableDeclaration", "scope": 11828, "src": "1199:12:20", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 11817, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1199:5:20", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1198:14:20"}, "scope": 11829, "src": "1059:297:20", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 11830, "src": "26:1332:20"}], "src": "0:1359:20"}, "id": 20}, "./contracts/exchange/contracts-utils/contracts/src/Ownable.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/Ownable.sol", "exportedSymbols": {"Ownable": [9953]}, "id": 9954, "nodeType": "SourceUnit", "nodes": [{"id": 9874, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:21"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/interfaces/IOwnable.sol", "file": "./interfaces/IOwnable.sol", "id": 9875, "nodeType": "ImportDirective", "scope": 9954, "sourceUnit": 11738, "src": "605:35:21", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibOwnableRichErrors.sol", "file": "./LibOwnableRichErrors.sol", "id": 9876, "nodeType": "ImportDirective", "scope": 9954, "sourceUnit": 11724, "src": "641:36:21", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "./LibRichErrors.sol", "id": 9877, "nodeType": "ImportDirective", "scope": 9954, "sourceUnit": 9873, "src": "678:29:21", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 9878, "name": "IOwnable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11737, "src": "734:8:21", "typeDescriptions": {"typeIdentifier": "t_contract$_IOwnable_$11737", "typeString": "contract IOwnable"}}, "id": 9879, "nodeType": "InheritanceSpecifier", "src": "734:8:21"}], "contractDependencies": [11737], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 9953, "linearizedBaseContracts": [9953, 11737], "name": "Ownable", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 9881, "name": "owner", "nodeType": "VariableDeclaration", "scope": 9953, "src": "827:20:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9880, "name": "address", "nodeType": "ElementaryTypeName", "src": "827:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "public"}, {"body": {"id": 9889, "nodeType": "Block", "src": "888:35:21", "statements": [{"expression": {"argumentTypes": null, "id": 9887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 9884, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9881, "src": "898:5:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9885, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "906:3:21", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 9886, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "906:10:21", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "898:18:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 9888, "nodeType": "ExpressionStatement", "src": "898:18:21"}]}, "documentation": null, "id": 9890, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": {"id": 9882, "nodeType": "ParameterList", "parameters": [], "src": "866:2:21"}, "returnParameters": {"id": 9883, "nodeType": "ParameterList", "parameters": [], "src": "888:0:21"}, "scope": 9953, "src": "854:69:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public"}, {"body": {"id": 9896, "nodeType": "Block", "src": "950:50:21", "statements": [{"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 9892, "name": "_assertSenderIsOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9952, "src": "960:20:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view"}}, "id": 9893, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "960:22:21", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9894, "nodeType": "ExpressionStatement", "src": "960:22:21"}, {"id": 9895, "nodeType": "PlaceholderStatement", "src": "992:1:21"}]}, "documentation": null, "id": 9897, "name": "onlyOwner", "nodeType": "ModifierDefinition", "parameters": {"id": 9891, "nodeType": "ParameterList", "parameters": [], "src": "947:2:21"}, "src": "929:71:21", "visibility": "internal"}, {"body": {"id": 9930, "nodeType": "Block", "src": "1179:247:21", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 9908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 9904, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9899, "src": "1193:8:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 9906, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1213:1:21", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 9905, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1205:7:21", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 9907, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1205:10:21", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "1193:22:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 9928, "nodeType": "Block", "src": "1318:102:21", "statements": [{"expression": {"argumentTypes": null, "id": 9920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 9918, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9881, "src": "1332:5:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 9919, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9899, "src": "1340:8:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1332:16:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 9921, "nodeType": "ExpressionStatement", "src": "1332:16:21"}, {"eventCall": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9923, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "1388:3:21", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 9924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1388:10:21", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, {"argumentTypes": null, "id": 9925, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9899, "src": "1400:8:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 9922, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11731, "src": "1367:20:21", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 9926, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1367:42:21", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9927, "nodeType": "EmitStatement", "src": "1362:47:21"}]}, "id": 9929, "nodeType": "IfStatement", "src": "1189:231:21", "trueBody": {"id": 9917, "nodeType": "Block", "src": "1217:95:21", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 9912, "name": "LibOwnableRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11723, "src": "1253:20:21", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOwnableRichErrors_$11723_$", "typeString": "type(library LibOwnableRichErrors)"}}, "id": 9913, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransferOwnerToZeroError", "nodeType": "MemberAccess", "referencedDeclaration": 11722, "src": "1253:45:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 9914, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1253:47:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9909, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "1231:13:21", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "1231:21:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9915, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1231:70:21", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9916, "nodeType": "ExpressionStatement", "src": "1231:70:21"}]}}]}, "documentation": "@dev Change the owner of this contract.\n @param newOwner New owner address.", "id": 9931, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 9902, "modifierName": {"argumentTypes": null, "id": 9901, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9897, "src": "1165:9:21", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "1165:9:21"}], "name": "transferOwnership", "nodeType": "FunctionDefinition", "parameters": {"id": 9900, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9899, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 9931, "src": "1124:16:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9898, "name": "address", "nodeType": "ElementaryTypeName", "src": "1124:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1123:18:21"}, "returnParameters": {"id": 9903, "nodeType": "ParameterList", "parameters": [], "src": "1179:0:21"}, "scope": 9953, "src": "1097:329:21", "stateMutability": "nonpayable", "superFunction": 11736, "visibility": "public"}, {"body": {"id": 9951, "nodeType": "Block", "src": "1498:189:21", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 9937, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9934, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "1512:3:21", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 9935, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1512:10:21", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 9936, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9881, "src": "1526:5:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1512:19:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 9950, "nodeType": "IfStatement", "src": "1508:173:21", "trueBody": {"id": 9949, "nodeType": "Block", "src": "1533:148:21", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 9943, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "1622:3:21", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 9944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1622:10:21", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, {"argumentTypes": null, "id": 9945, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9881, "src": "1650:5:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 9941, "name": "LibOwnableRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11723, "src": "1569:20:21", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOwnableRichErrors_$11723_$", "typeString": "type(library LibOwnableRichErrors)"}}, "id": 9942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OnlyOwnerError", "nodeType": "MemberAccess", "referencedDeclaration": 11714, "src": "1569:35:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,address) pure returns (bytes memory)"}}, "id": 9946, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1569:100:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 9938, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "1547:13:21", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 9940, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "1547:21:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 9947, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1547:123:21", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9948, "nodeType": "ExpressionStatement", "src": "1547:123:21"}]}}]}, "documentation": null, "id": 9952, "implemented": true, "kind": "function", "modifiers": [], "name": "_assertSenderIsOwner", "nodeType": "FunctionDefinition", "parameters": {"id": 9932, "nodeType": "ParameterList", "parameters": [], "src": "1461:2:21"}, "returnParameters": {"id": 9933, "nodeType": "ParameterList", "parameters": [], "src": "1498:0:21"}, "scope": 9953, "src": "1432:255:21", "stateMutability": "view", "superFunction": null, "visibility": "internal"}], "scope": 9954, "src": "710:979:21"}], "src": "580:1110:21"}, "id": 21}, "./contracts/exchange/contracts-utils/contracts/src/ReentrancyGuard.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/ReentrancyGuard.sol", "exportedSymbols": {"ReentrancyGuard": [11874]}, "id": 11875, "nodeType": "SourceUnit", "nodes": [{"id": 11831, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:22"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibReentrancyGuardRichErrors.sol", "file": "./LibReentrancyGuardRichErrors.sol", "id": 11832, "nodeType": "ImportDirective", "scope": 11875, "sourceUnit": 12077, "src": "605:44:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "./LibRichErrors.sol", "id": 11833, "nodeType": "ImportDirective", "scope": 11875, "sourceUnit": 9873, "src": "650:29:22", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 11874, "linearizedBaseContracts": [11874], "name": "ReentrancyGuard", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 11836, "name": "_locked", "nodeType": "VariableDeclaration", "scope": 11874, "src": "744:28:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 11834, "name": "bool", "nodeType": "ElementaryTypeName", "src": "744:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": {"argumentTypes": null, "hexValue": "66616c7365", "id": 11835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "767:5:22", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "visibility": "private"}, {"body": {"id": 11845, "nodeType": "Block", "src": "949:86:22", "statements": [{"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11838, "name": "_lockMutexOrThrowIfAlreadyLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11865, "src": "959:32:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 11839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "959:34:22", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11840, "nodeType": "ExpressionStatement", "src": "959:34:22"}, {"id": 11841, "nodeType": "PlaceholderStatement", "src": "1003:1:22"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11842, "name": "_unlockMutex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11873, "src": "1014:12:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 11843, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1014:14:22", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11844, "nodeType": "ExpressionStatement", "src": "1014:14:22"}]}, "documentation": "@dev Functions with this modifer cannot be reentered. The mutex will be locked\n before function execution and unlocked after.", "id": 11846, "name": "nonReentrant", "nodeType": "ModifierDefinition", "parameters": {"id": 11837, "nodeType": "ParameterList", "parameters": [], "src": "946:2:22"}, "src": "925:110:22", "visibility": "internal"}, {"body": {"id": 11864, "nodeType": "Block", "src": "1106:244:22", "statements": [{"condition": {"argumentTypes": null, "id": 11849, "name": "_locked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11836, "src": "1157:7:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 11859, "nodeType": "IfStatement", "src": "1153:144:22", "trueBody": {"id": 11858, "nodeType": "Block", "src": "1166:131:22", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 11853, "name": "LibReentrancyGuardRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12076, "src": "1219:28:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibReentrancyGuardRichErrors_$12076_$", "typeString": "type(library LibReentrancyGuardRichErrors)"}}, "id": 11854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "IllegalReentrancyError", "nodeType": "MemberAccess", "referencedDeclaration": 12075, "src": "1219:51:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 11855, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1219:53:22", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 11850, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "1180:13:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 11852, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "1180:21:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 11856, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1180:106:22", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11857, "nodeType": "ExpressionStatement", "src": "1180:106:22"}]}}, {"expression": {"argumentTypes": null, "id": 11862, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 11860, "name": "_locked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11836, "src": "1329:7:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "74727565", "id": 11861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1339:4:22", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "1329:14:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 11863, "nodeType": "ExpressionStatement", "src": "1329:14:22"}]}, "documentation": null, "id": 11865, "implemented": true, "kind": "function", "modifiers": [], "name": "_lockMutexOrThrowIfAlreadyLocked", "nodeType": "FunctionDefinition", "parameters": {"id": 11847, "nodeType": "ParameterList", "parameters": [], "src": "1082:2:22"}, "returnParameters": {"id": 11848, "nodeType": "ParameterList", "parameters": [], "src": "1106:0:22"}, "scope": 11874, "src": "1041:309:22", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11872, "nodeType": "Block", "src": "1401:57:22", "statements": [{"expression": {"argumentTypes": null, "id": 11870, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 11868, "name": "_locked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11836, "src": "1436:7:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "66616c7365", "id": 11869, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1446:5:22", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "1436:15:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 11871, "nodeType": "ExpressionStatement", "src": "1436:15:22"}]}, "documentation": null, "id": 11873, "implemented": true, "kind": "function", "modifiers": [], "name": "_unlockMutex", "nodeType": "FunctionDefinition", "parameters": {"id": 11866, "nodeType": "ParameterList", "parameters": [], "src": "1377:2:22"}, "returnParameters": {"id": 11867, "nodeType": "ParameterList", "parameters": [], "src": "1401:0:22"}, "scope": 11874, "src": "1356:102:22", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}], "scope": 11875, "src": "682:778:22"}], "src": "580:881:22"}, "id": 22}, "./contracts/exchange/contracts-utils/contracts/src/Refundable.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/Refundable.sol", "exportedSymbols": {"Refundable": [11323]}, "id": 11324, "nodeType": "SourceUnit", "nodes": [{"id": 11218, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:23"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/ReentrancyGuard.sol", "file": "./ReentrancyGuard.sol", "id": 11219, "nodeType": "ImportDirective", "scope": 11324, "sourceUnit": 11875, "src": "605:31:23", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 11220, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11874, "src": "666:15:23", "typeDescriptions": {"typeIdentifier": "t_contract$_ReentrancyGuard_$11874", "typeString": "contract ReentrancyGuard"}}, "id": 11221, "nodeType": "InheritanceSpecifier", "src": "666:15:23"}], "contractDependencies": [11874], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 11323, "linearizedBaseContracts": [11323, 11874], "name": "Refundable", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 11223, "name": "_shouldNotRefund", "nodeType": "VariableDeclaration", "scope": 11323, "src": "776:30:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 11222, "name": "bool", "nodeType": "ElementaryTypeName", "src": "776:4:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}, {"body": {"id": 11229, "nodeType": "Block", "src": "841:60:23", "statements": [{"id": 11225, "nodeType": "PlaceholderStatement", "src": "851:1:23"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11226, "name": "_refundNonZeroBalanceIfEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11271, "src": "862:30:23", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 11227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "862:32:23", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11228, "nodeType": "ExpressionStatement", "src": "862:32:23"}]}, "documentation": null, "id": 11230, "name": "refundFinalBalance", "nodeType": "ModifierDefinition", "parameters": {"id": 11224, "nodeType": "ParameterList", "parameters": [], "src": "841:0:23"}, "src": "813:88:23", "visibility": "internal"}, {"body": {"id": 11242, "nodeType": "Block", "src": "944:128:23", "statements": [{"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11232, "name": "_lockMutexOrThrowIfAlreadyLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11865, "src": "954:32:23", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 11233, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "954:34:23", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11234, "nodeType": "ExpressionStatement", "src": "954:34:23"}, {"id": 11235, "nodeType": "PlaceholderStatement", "src": "998:1:23"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11236, "name": "_refundNonZeroBalanceIfEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11271, "src": "1009:30:23", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 11237, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1009:32:23", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11238, "nodeType": "ExpressionStatement", "src": "1009:32:23"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11239, "name": "_unlockMutex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11873, "src": "1051:12:23", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 11240, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1051:14:23", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11241, "nodeType": "ExpressionStatement", "src": "1051:14:23"}]}, "documentation": null, "id": 11243, "name": "refundFinalBalanceNoReentry", "nodeType": "ModifierDefinition", "parameters": {"id": 11231, "nodeType": "ParameterList", "parameters": [], "src": "944:0:23"}, "src": "907:165:23", "visibility": "internal"}, {"body": {"id": 11258, "nodeType": "Block", "src": "1109:177:23", "statements": [{"condition": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11245, "name": "_areRefundsDisabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11322, "src": "1123:19:23", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)"}}, "id": 11246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1123:21:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 11256, "nodeType": "Block", "src": "1178:102:23", "statements": [{"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11249, "name": "_disableRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11303, "src": "1192:14:23", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 11250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1192:16:23", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11251, "nodeType": "ExpressionStatement", "src": "1192:16:23"}, {"id": 11252, "nodeType": "PlaceholderStatement", "src": "1222:1:23"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11253, "name": "_enableAndRefundNonZeroBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11314, "src": "1237:30:23", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 11254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1237:32:23", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11255, "nodeType": "ExpressionStatement", "src": "1237:32:23"}]}, "id": 11257, "nodeType": "IfStatement", "src": "1119:161:23", "trueBody": {"id": 11248, "nodeType": "Block", "src": "1146:26:23", "statements": [{"id": 11247, "nodeType": "PlaceholderStatement", "src": "1160:1:23"}]}}]}, "documentation": null, "id": 11259, "name": "disableRefundUntilEnd", "nodeType": "ModifierDefinition", "parameters": {"id": 11244, "nodeType": "ParameterList", "parameters": [], "src": "1109:0:23"}, "src": "1078:208:23", "visibility": "internal"}, {"body": {"id": 11270, "nodeType": "Block", "src": "1355:92:23", "statements": [{"condition": {"argumentTypes": null, "id": 11264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1369:22:23", "subExpression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11262, "name": "_areRefundsDisabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11322, "src": "1370:19:23", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)"}}, "id": 11263, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1370:21:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 11269, "nodeType": "IfStatement", "src": "1365:76:23", "trueBody": {"id": 11268, "nodeType": "Block", "src": "1393:48:23", "statements": [{"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11265, "name": "_refundNonZeroBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "1407:21:23", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 11266, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1407:23:23", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11267, "nodeType": "ExpressionStatement", "src": "1407:23:23"}]}}]}, "documentation": null, "id": 11271, "implemented": true, "kind": "function", "modifiers": [], "name": "_refundNonZeroBalanceIfEnabled", "nodeType": "FunctionDefinition", "parameters": {"id": 11260, "nodeType": "ParameterList", "parameters": [], "src": "1331:2:23"}, "returnParameters": {"id": 11261, "nodeType": "ParameterList", "parameters": [], "src": "1355:0:23"}, "scope": 11323, "src": "1292:155:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11294, "nodeType": "Block", "src": "1507:135:23", "statements": [{"assignments": [11275], "declarations": [{"constant": false, "id": 11275, "name": "balance", "nodeType": "VariableDeclaration", "scope": 11294, "src": "1517:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 11274, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1517:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 11280, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 11277, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12153, "src": "1543:4:23", "typeDescriptions": {"typeIdentifier": "t_contract$_Refundable_$11323", "typeString": "contract Refundable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Refundable_$11323", "typeString": "contract Refundable"}], "id": 11276, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1535:7:23", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 11278, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1535:13:23", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 11279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1535:21:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1517:39:23"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 11283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 11281, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11275, "src": "1570:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 11282, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1580:1:23", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1570:11:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 11293, "nodeType": "IfStatement", "src": "1566:70:23", "trueBody": {"id": 11292, "nodeType": "Block", "src": "1583:53:23", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 11289, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11275, "src": "1617:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 11284, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "1597:3:23", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 11287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1597:10:23", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "id": 11288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1597:19:23", "typeDescriptions": {"typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 11290, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1597:28:23", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11291, "nodeType": "ExpressionStatement", "src": "1597:28:23"}]}}]}, "documentation": null, "id": 11295, "implemented": true, "kind": "function", "modifiers": [], "name": "_refundNonZeroBalance", "nodeType": "FunctionDefinition", "parameters": {"id": 11272, "nodeType": "ParameterList", "parameters": [], "src": "1483:2:23"}, "returnParameters": {"id": 11273, "nodeType": "ParameterList", "parameters": [], "src": "1507:0:23"}, "scope": 11323, "src": "1453:189:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11302, "nodeType": "Block", "src": "1695:40:23", "statements": [{"expression": {"argumentTypes": null, "id": 11300, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 11298, "name": "_shouldNotRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11223, "src": "1705:16:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "74727565", "id": 11299, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1724:4:23", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "1705:23:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 11301, "nodeType": "ExpressionStatement", "src": "1705:23:23"}]}, "documentation": null, "id": 11303, "implemented": true, "kind": "function", "modifiers": [], "name": "_disableRefund", "nodeType": "FunctionDefinition", "parameters": {"id": 11296, "nodeType": "ParameterList", "parameters": [], "src": "1671:2:23"}, "returnParameters": {"id": 11297, "nodeType": "ParameterList", "parameters": [], "src": "1695:0:23"}, "scope": 11323, "src": "1648:87:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11313, "nodeType": "Block", "src": "1804:74:23", "statements": [{"expression": {"argumentTypes": null, "id": 11308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 11306, "name": "_shouldNotRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11223, "src": "1814:16:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "66616c7365", "id": 11307, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1833:5:23", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "1814:24:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 11309, "nodeType": "ExpressionStatement", "src": "1814:24:23"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 11310, "name": "_refundNonZeroBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "1848:21:23", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 11311, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1848:23:23", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 11312, "nodeType": "ExpressionStatement", "src": "1848:23:23"}]}, "documentation": null, "id": 11314, "implemented": true, "kind": "function", "modifiers": [], "name": "_enableAndRefundNonZeroBalance", "nodeType": "FunctionDefinition", "parameters": {"id": 11304, "nodeType": "ParameterList", "parameters": [], "src": "1780:2:23"}, "returnParameters": {"id": 11305, "nodeType": "ParameterList", "parameters": [], "src": "1804:0:23"}, "scope": 11323, "src": "1741:137:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 11321, "nodeType": "Block", "src": "1972:40:23", "statements": [{"expression": {"argumentTypes": null, "id": 11319, "name": "_shouldNotRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11223, "src": "1989:16:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 11318, "id": 11320, "nodeType": "Return", "src": "1982:23:23"}]}, "documentation": null, "id": 11322, "implemented": true, "kind": "function", "modifiers": [], "name": "_areRefundsDisabled", "nodeType": "FunctionDefinition", "parameters": {"id": 11315, "nodeType": "ParameterList", "parameters": [], "src": "1912:2:23"}, "returnParameters": {"id": 11318, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11317, "name": "", "nodeType": "VariableDeclaration", "scope": 11322, "src": "1962:4:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 11316, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1962:4:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "1961:6:23"}, "scope": 11323, "src": "1884:128:23", "stateMutability": "view", "superFunction": null, "visibility": "internal"}], "scope": 11324, "src": "639:1375:23"}], "src": "580:1435:23"}, "id": 23}, "./contracts/exchange/contracts-utils/contracts/src/interfaces/IOwnable.sol": {"ast": {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/interfaces/IOwnable.sol", "exportedSymbols": {"IOwnable": [11737]}, "id": 11738, "nodeType": "SourceUnit", "nodes": [{"id": 11725, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:24"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 11737, "linearizedBaseContracts": [11737], "name": "IOwnable", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": "@dev Emitted by Ownable when ownership is transferred.\n @param previousOwner The previous owner of the contract.\n @param newOwner The new owner of the contract.", "id": 11731, "name": "OwnershipTransferred", "nodeType": "EventDefinition", "parameters": {"id": 11730, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11727, "indexed": true, "name": "previousOwner", "nodeType": "VariableDeclaration", "scope": 11731, "src": "841:29:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11726, "name": "address", "nodeType": "ElementaryTypeName", "src": "841:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 11729, "indexed": true, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 11731, "src": "872:24:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11728, "name": "address", "nodeType": "ElementaryTypeName", "src": "872:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "840:57:24"}, "src": "814:84:24"}, {"body": null, "documentation": "@dev Transfers ownership of the contract to a new address.\n @param newOwner The address that will become the owner.", "id": 11736, "implemented": false, "kind": "function", "modifiers": [], "name": "transferOwnership", "nodeType": "FunctionDefinition", "parameters": {"id": 11734, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 11733, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 11736, "src": "1062:16:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11732, "name": "address", "nodeType": "ElementaryTypeName", "src": "1062:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1061:18:24"}, "returnParameters": {"id": 11735, "nodeType": "ParameterList", "parameters": [], "src": "1094:0:24"}, "scope": 11737, "src": "1035:60:24", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public"}], "scope": 11738, "src": "606:491:24"}], "src": "580:518:24"}, "id": 24}, "contracts/exchange/Exchange.sol": {"ast": {"absolutePath": "contracts/exchange/Exchange.sol", "exportedSymbols": {"Exchange": [27]}, "id": 28, "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:25"}, {"id": 2, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:25"}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol", "id": 3, "nodeType": "ImportDirective", "scope": 28, "sourceUnit": 8732, "src": "639:79:25", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/MixinMatchOrders.sol", "file": "./MixinMatchOrders.sol", "id": 4, "nodeType": "ImportDirective", "scope": 28, "sourceUnit": 1819, "src": "719:32:25", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/MixinWrapperFunctions.sol", "file": "./MixinWrapperFunctions.sol", "id": 5, "nodeType": "ImportDirective", "scope": 28, "sourceUnit": 4080, "src": "752:37:25", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/MixinTransferSimulator.sol", "file": "./MixinTransferSimulator.sol", "id": 6, "nodeType": "ImportDirective", "scope": 28, "sourceUnit": 3475, "src": "790:38:25", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 7, "name": "LibEIP712ExchangeDomain", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8731, "src": "1082:23:25", "typeDescriptions": {"typeIdentifier": "t_contract$_LibEIP712ExchangeDomain_$8731", "typeString": "contract LibEIP712ExchangeDomain"}}, "id": 8, "nodeType": "InheritanceSpecifier", "src": "1082:23:25"}, {"arguments": null, "baseName": {"contractScope": null, "id": 9, "name": "MixinMatchOrders", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1818, "src": "1111:16:25", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinMatchOrders_$1818", "typeString": "contract MixinMatchOrders"}}, "id": 10, "nodeType": "InheritanceSpecifier", "src": "1111:16:25"}, {"arguments": null, "baseName": {"contractScope": null, "id": 11, "name": "MixinWrapperFunctions", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4079, "src": "1133:21:25", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinWrapperFunctions_$4079", "typeString": "contract MixinWrapperFunctions"}}, "id": 12, "nodeType": "InheritanceSpecifier", "src": "1133:21:25"}, {"arguments": null, "baseName": {"contractScope": null, "id": 13, "name": "MixinTransferSimulator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3474, "src": "1160:22:25", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinTransferSimulator_$3474", "typeString": "contract MixinTransferSimulator"}}, "id": 14, "nodeType": "InheritanceSpecifier", "src": "1160:22:25"}], "contractDependencies": [223, 998, 1818, 2069, 3070, 3412, 3474, 4079, 7507, 7656, 7722, 7757, 7844, 7879, 8032, 8731, 9953, 11323, 11600, 11737, 11874], "contractKind": "contract", "documentation": "@dev The 0x Exchange contract.", "fullyImplemented": true, "id": 27, "linearizedBaseContracts": [27, 3474, 4079, 1818, 7722, 998, 3070, 3412, 7879, 7844, 11600, 2069, 223, 8731, 11323, 11874, 7507, 9953, 11737, 7757, 7656, 8032], "name": "Exchange", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 25, "nodeType": "Block", "src": "1437:2:25", "statements": []}, "documentation": "@dev Mixins are instantiated in the order they are inherited\n @param chainId Chain ID of the network this contract is deployed on.", "id": 26, "implemented": true, "kind": "constructor", "modifiers": [{"arguments": [{"argumentTypes": null, "id": 19, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "1412:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 21, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1429:1:25", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 20, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1421:7:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 22, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1421:10:25", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "id": 23, "modifierName": {"argumentTypes": null, "id": 18, "name": "LibEIP712ExchangeDomain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8731, "src": "1388:23:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibEIP712ExchangeDomain_$8731_$", "typeString": "type(contract LibEIP712ExchangeDomain)"}}, "nodeType": "ModifierInvocation", "src": "1388:44:25"}], "name": "", "nodeType": "FunctionDefinition", "parameters": {"id": 17, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 16, "name": "chainId", "nodeType": "VariableDeclaration", "scope": 26, "src": "1348:15:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 15, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1348:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1347:17:25"}, "returnParameters": {"id": 24, "nodeType": "ParameterList", "parameters": [], "src": "1437:0:25"}, "scope": 27, "src": "1335:104:25", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public"}], "scope": 28, "src": "1057:384:25"}], "src": "580:862:25"}, "id": 25}, "contracts/exchange/MixinAssetProxyDispatcher.sol": {"ast": {"absolutePath": "contracts/exchange/MixinAssetProxyDispatcher.sol", "exportedSymbols": {"MixinAssetProxyDispatcher": [223]}, "id": 224, "nodeType": "SourceUnit", "nodes": [{"id": 29, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:26"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/Ownable.sol", "file": "@0x/contracts-utils/contracts/src/Ownable.sol", "id": 30, "nodeType": "ImportDirective", "scope": 224, "sourceUnit": 9954, "src": "605:55:26", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibBytes.sol", "file": "@0x/contracts-utils/contracts/src/LibBytes.sol", "id": 31, "nodeType": "ImportDirective", "scope": 224, "sourceUnit": 9844, "src": "661:56:26", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "@0x/contracts-utils/contracts/src/LibRichErrors.sol", "id": 32, "nodeType": "ImportDirective", "scope": 224, "sourceUnit": 9873, "src": "718:61:26", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "id": 33, "nodeType": "ImportDirective", "scope": 224, "sourceUnit": 9343, "src": "780:77:26", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IAssetProxy.sol", "file": "./interfaces/IAssetProxy.sol", "id": 34, "nodeType": "ImportDirective", "scope": 224, "sourceUnit": 7487, "src": "858:38:26", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IAssetProxyDispatcher.sol", "file": "./interfaces/IAssetProxyDispatcher.sol", "id": 35, "nodeType": "ImportDirective", "scope": 224, "sourceUnit": 7508, "src": "897:48:26", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 36, "name": "Ownable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9953, "src": "990:7:26", "typeDescriptions": {"typeIdentifier": "t_contract$_Ownable_$9953", "typeString": "contract Ownable"}}, "id": 37, "nodeType": "InheritanceSpecifier", "src": "990:7:26"}, {"arguments": null, "baseName": {"contractScope": null, "id": 38, "name": "IAssetProxyDispatcher", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7507, "src": "1003:21:26", "typeDescriptions": {"typeIdentifier": "t_contract$_IAssetProxyDispatcher_$7507", "typeString": "contract IAssetProxyDispatcher"}}, "id": 39, "nodeType": "InheritanceSpecifier", "src": "1003:21:26"}], "contractDependencies": [7507, 9953, 11737], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 223, "linearizedBaseContracts": [223, 7507, 9953, 11737], "name": "MixinAssetProxyDispatcher", "nodeType": "ContractDefinition", "nodes": [{"id": 42, "libraryName": {"contractScope": null, "id": 40, "name": "LibBytes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9843, "src": "1037:8:26", "typeDescriptions": {"typeIdentifier": "t_contract$_LibBytes_$9843", "typeString": "library LibBytes"}}, "nodeType": "UsingForDirective", "src": "1031:25:26", "typeName": {"id": 41, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1050:5:26", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, {"constant": false, "id": 46, "name": "_assetProxies", "nodeType": "VariableDeclaration", "scope": 223, "src": "1131:50:26", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$", "typeString": "mapping(bytes4 => address)"}, "typeName": {"id": 45, "keyType": {"id": 43, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1140:6:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "Mapping", "src": "1131:27:26", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$", "typeString": "mapping(bytes4 => address)"}, "valueType": {"id": 44, "name": "address", "nodeType": "ElementaryTypeName", "src": "1150:7:26", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "value": null, "visibility": "internal"}, {"body": {"id": 95, "nodeType": "Block", "src": "1477:613:26", "statements": [{"assignments": [54], "declarations": [{"constant": false, "id": 54, "name": "assetProxyId", "nodeType": "VariableDeclaration", "scope": 95, "src": "1549:19:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 53, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1549:6:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "id": 60, "initialValue": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 56, "name": "assetProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, "src": "1583:10:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 55, "name": "IAssetProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7486, "src": "1571:11:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IAssetProxy_$7486_$", "typeString": "type(contract IAssetProxy)"}}, "id": 57, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1571:23:26", "typeDescriptions": {"typeIdentifier": "t_contract$_IAssetProxy_$7486", "typeString": "contract IAssetProxy"}}, "id": 58, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getProxyId", "nodeType": "MemberAccess", "referencedDeclaration": 7485, "src": "1571:34:26", "typeDescriptions": {"typeIdentifier": "t_function_external_pure$__$returns$_t_bytes4_$", "typeString": "function () pure external returns (bytes4)"}}, "id": 59, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1571:36:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "VariableDeclarationStatement", "src": "1549:58:26"}, {"assignments": [62], "declarations": [{"constant": false, "id": 62, "name": "currentAssetProxy", "nodeType": "VariableDeclaration", "scope": 95, "src": "1617:25:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 61, "name": "address", "nodeType": "ElementaryTypeName", "src": "1617:7:26", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 66, "initialValue": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 63, "name": "_assetProxies", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, "src": "1645:13:26", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$", "typeString": "mapping(bytes4 => address)"}}, "id": 65, "indexExpression": {"argumentTypes": null, "id": 64, "name": "assetProxyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54, "src": "1659:12:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1645:27:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "1617:55:26"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 71, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 67, "name": "currentAssetProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 62, "src": "1686:17:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 69, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1715:1:26", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 68, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1707:7:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 70, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1707:10:26", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "1686:31:26", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 83, "nodeType": "IfStatement", "src": "1682:207:26", "trueBody": {"id": 82, "nodeType": "Block", "src": "1719:170:26", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 77, "name": "assetProxyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54, "src": "1816:12:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 78, "name": "currentAssetProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 62, "src": "1846:17:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 75, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "1755:21:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 76, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AssetProxyExistsError", "nodeType": "MemberAccess", "referencedDeclaration": 9167, "src": "1755:43:26", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes4_$_t_address_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4,address) pure returns (bytes memory)"}}, "id": 79, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1755:122:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 72, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "1733:13:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 74, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "1733:21:26", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 80, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1733:145:26", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 81, "nodeType": "ExpressionStatement", "src": "1733:145:26"}]}}, {"expression": {"argumentTypes": null, "id": 88, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 84, "name": "_assetProxies", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, "src": "1948:13:26", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$", "typeString": "mapping(bytes4 => address)"}}, "id": 86, "indexExpression": {"argumentTypes": null, "id": 85, "name": "assetProxyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54, "src": "1962:12:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1948:27:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 87, "name": "assetProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, "src": "1978:10:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1948:40:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 89, "nodeType": "ExpressionStatement", "src": "1948:40:26"}, {"eventCall": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 91, "name": "assetProxyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54, "src": "2037:12:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 92, "name": "assetProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, "src": "2063:10:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 90, "name": "AssetProxyRegistered", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7494, "src": "2003:20:26", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes4_$_t_address_$returns$__$", "typeString": "function (bytes4,address)"}}, "id": 93, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2003:80:26", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 94, "nodeType": "EmitStatement", "src": "1998:85:26"}]}, "documentation": "@dev Registers an asset proxy to its asset proxy id.\n Once an asset proxy is registered, it cannot be unregistered.\n @param assetProxy Address of new asset proxy to register.", "id": 96, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 51, "modifierName": {"argumentTypes": null, "id": 50, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9897, "src": "1463:9:26", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "1463:9:26"}], "name": "registerAssetProxy", "nodeType": "FunctionDefinition", "parameters": {"id": 49, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 48, "name": "assetProxy", "nodeType": "VariableDeclaration", "scope": 96, "src": "1418:18:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 47, "name": "address", "nodeType": "ElementaryTypeName", "src": "1418:7:26", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1417:20:26"}, "returnParameters": {"id": 52, "nodeType": "ParameterList", "parameters": [], "src": "1477:0:26"}, "scope": 223, "src": "1390:700:26", "stateMutability": "nonpayable", "superFunction": 7499, "visibility": "external"}, {"body": {"id": 107, "nodeType": "Block", "src": "2414:51:26", "statements": [{"expression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 103, "name": "_assetProxies", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, "src": "2431:13:26", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$", "typeString": "mapping(bytes4 => address)"}}, "id": 105, "indexExpression": {"argumentTypes": null, "id": 104, "name": "assetProxyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "2445:12:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2431:27:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 102, "id": 106, "nodeType": "Return", "src": "2424:34:26"}]}, "documentation": "@dev Gets an asset proxy.\n @param assetProxyId Id of the asset proxy.\n @return assetProxy The asset proxy address registered to assetProxyId. Returns 0x0 if no proxy is registered.", "id": 108, "implemented": true, "kind": "function", "modifiers": [], "name": "getAssetProxy", "nodeType": "FunctionDefinition", "parameters": {"id": 99, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 98, "name": "assetProxyId", "nodeType": "VariableDeclaration", "scope": 108, "src": "2322:19:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 97, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2322:6:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "2321:21:26"}, "returnParameters": {"id": 102, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 101, "name": "assetProxy", "nodeType": "VariableDeclaration", "scope": 108, "src": "2390:18:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 100, "name": "address", "nodeType": "ElementaryTypeName", "src": "2390:7:26", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "2389:20:26"}, "scope": 223, "src": "2299:166:26", "stateMutability": "view", "superFunction": 7506, "visibility": "external"}, {"body": {"id": 221, "nodeType": "Block", "src": "3037:1854:26", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 121, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, "src": "3109:6:26", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 122, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3118:1:26", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3109:10:26", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 220, "nodeType": "IfStatement", "src": "3105:1780:26", "trueBody": {"id": 219, "nodeType": "Block", "src": "3121:1764:26", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 124, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, "src": "3242:9:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3242:16:26", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3261:2:26", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "3242:21:26", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "hexValue": "34", "id": 128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3267:1:26", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "3242:26:26", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 144, "nodeType": "IfStatement", "src": "3238:311:26", "trueBody": {"id": 143, "nodeType": "Block", "src": "3270:279:26", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 135, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "3377:21:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AssetProxyDispatchErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8738, "src": "3377:50:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_AssetProxyDispatchErrorCodes_$8738_$", "typeString": "type(enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes)"}}, "id": 137, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_ASSET_DATA_LENGTH", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3377:76:26", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}}, {"argumentTypes": null, "id": 138, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110, "src": "3475:9:26", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 139, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, "src": "3506:9:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 133, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "3310:21:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AssetProxyDispatchError", "nodeType": "MemberAccess", "referencedDeclaration": 9187, "src": "3310:45:26", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_AssetProxyDispatchErrorCodes_$8738_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes,bytes32,bytes memory) pure returns (bytes memory)"}}, "id": 140, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3310:223:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 130, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "3288:13:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "3288:21:26", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 141, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3288:246:26", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 142, "nodeType": "ExpressionStatement", "src": "3288:246:26"}]}}, {"assignments": [146], "declarations": [{"constant": false, "id": 146, "name": "assetProxyId", "nodeType": "VariableDeclaration", "scope": 219, "src": "3597:19:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 145, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3597:6:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "id": 151, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 149, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3640:1:26", "subdenomination": null, "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": {"argumentTypes": null, "id": 147, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, "src": "3619:9:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "readBytes4", "nodeType": "MemberAccess", "referencedDeclaration": 9833, "src": "3619:20:26", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes4_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes4)"}}, "id": 150, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3619:23:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "VariableDeclarationStatement", "src": "3597:45:26"}, {"assignments": [153], "declarations": [{"constant": false, "id": 153, "name": "assetProxy", "nodeType": "VariableDeclaration", "scope": 219, "src": "3656:18:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 152, "name": "address", "nodeType": "ElementaryTypeName", "src": "3656:7:26", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 157, "initialValue": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 154, "name": "_assetProxies", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, "src": "3677:13:26", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$", "typeString": "mapping(bytes4 => address)"}}, "id": 156, "indexExpression": {"argumentTypes": null, "id": 155, "name": "assetProxyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, "src": "3691:12:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3677:27:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3656:48:26"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 158, "name": "assetProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "3768:10:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 160, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3790:1:26", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 159, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3782:7:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 161, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3782:10:26", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "3768:24:26", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 177, "nodeType": "IfStatement", "src": "3764:303:26", "trueBody": {"id": 176, "nodeType": "Block", "src": "3794:273:26", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 168, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "3901:21:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AssetProxyDispatchErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8738, "src": "3901:50:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_AssetProxyDispatchErrorCodes_$8738_$", "typeString": "type(enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes)"}}, "id": 170, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "UNKNOWN_ASSET_PROXY", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3901:70:26", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}}, {"argumentTypes": null, "id": 171, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110, "src": "3993:9:26", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 172, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, "src": "4024:9:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 166, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "3834:21:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AssetProxyDispatchError", "nodeType": "MemberAccess", "referencedDeclaration": 9187, "src": "3834:45:26", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_AssetProxyDispatchErrorCodes_$8738_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes,bytes32,bytes memory) pure returns (bytes memory)"}}, "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3834:217:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 163, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "3812:13:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "3812:21:26", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3812:240:26", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 175, "nodeType": "ExpressionStatement", "src": "3812:240:26"}]}}, {"assignments": [179], "declarations": [{"constant": false, "id": 179, "name": "proxyCalldata", "nodeType": "VariableDeclaration", "scope": 219, "src": "4146:26:26", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 178, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4146:5:26", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 194, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4235:1:26", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 183, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4227:7:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4227:10:26", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}], "id": 182, "name": "IAssetProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7486, "src": "4215:11:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IAssetProxy_$7486_$", "typeString": "type(contract IAssetProxy)"}}, "id": 186, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4215:23:26", "typeDescriptions": {"typeIdentifier": "t_contract$_IAssetProxy_$7486", "typeString": "contract IAssetProxy"}}, "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 7480, "src": "4215:36:26", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes memory,address,address,uint256) external"}}, "id": 188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "selector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4215:45:26", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 189, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, "src": "4278:9:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 190, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 114, "src": "4305:4:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 191, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "4327:2:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 192, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, "src": "4347:6:26", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 180, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "4175:3:26", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 181, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4175:22:26", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 193, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4175:192:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "4146:221:26"}, {"assignments": [196, 198], "declarations": [{"constant": false, "id": 196, "name": "didSucceed", "nodeType": "VariableDeclaration", "scope": 219, "src": "4474:15:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 195, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4474:4:26", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 198, "name": "returnData", "nodeType": "VariableDeclaration", "scope": 219, "src": "4491:23:26", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 197, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4491:5:26", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 203, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 201, "name": "proxyCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 179, "src": "4534:13:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 199, "name": "assetProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "4518:10:26", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4518:15:26", "typeDescriptions": {"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)"}}, "id": 202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4518:30:26", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "4473:75:26"}, {"condition": {"argumentTypes": null, "id": 205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "4649:11:26", "subExpression": {"argumentTypes": null, "id": 204, "name": "didSucceed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 196, "src": "4650:10:26", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 218, "nodeType": "IfStatement", "src": "4645:230:26", "trueBody": {"id": 217, "nodeType": "Block", "src": "4662:213:26", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 211, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110, "src": "4769:9:26", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 212, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, "src": "4800:9:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 213, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 198, "src": "4831:10:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 209, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "4702:21:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AssetProxyTransferError", "nodeType": "MemberAccess", "referencedDeclaration": 9207, "src": "4702:45:26", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes32,bytes memory,bytes memory) pure returns (bytes memory)"}}, "id": 214, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4702:157:26", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 206, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "4680:13:26", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "4680:21:26", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4680:180:26", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 216, "nodeType": "ExpressionStatement", "src": "4680:180:26"}]}}]}}]}, "documentation": "@dev Forwards arguments to assetProxy and calls `transferFrom`. Either succeeds or throws.\n @param orderHash Hash of the order associated with this transfer.\n @param assetData Byte array encoded for the asset.\n @param from Address to transfer token from.\n @param to Address to transfer token to.\n @param amount Amount of token to transfer.", "id": 222, "implemented": true, "kind": "function", "modifiers": [], "name": "_dispatchTransferFrom", "nodeType": "FunctionDefinition", "parameters": {"id": 119, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 110, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 222, "src": "2894:17:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 109, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2894:7:26", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 112, "name": "assetData", "nodeType": "VariableDeclaration", "scope": 222, "src": "2921:22:26", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 111, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2921:5:26", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 114, "name": "from", "nodeType": "VariableDeclaration", "scope": 222, "src": "2953:12:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 113, "name": "address", "nodeType": "ElementaryTypeName", "src": "2953:7:26", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 116, "name": "to", "nodeType": "VariableDeclaration", "scope": 222, "src": "2975:10:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 115, "name": "address", "nodeType": "ElementaryTypeName", "src": "2975:7:26", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 118, "name": "amount", "nodeType": "VariableDeclaration", "scope": 222, "src": "2995:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 117, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2995:7:26", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2884:131:26"}, "returnParameters": {"id": 120, "nodeType": "ParameterList", "parameters": [], "src": "3037:0:26"}, "scope": 223, "src": "2854:2037:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}], "scope": 224, "src": "948:3945:26"}], "src": "580:4314:26"}, "id": 26}, "contracts/exchange/MixinExchangeCore.sol": {"ast": {"absolutePath": "contracts/exchange/MixinExchangeCore.sol", "exportedSymbols": {"MixinExchangeCore": [998]}, "id": 999, "nodeType": "SourceUnit", "nodes": [{"id": 225, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "579:23:27"}, {"id": 226, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "603:33:27"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibBytes.sol", "file": "@0x/contracts-utils/contracts/src/LibBytes.sol", "id": 227, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 9844, "src": "638:56:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "@0x/contracts-utils/contracts/src/LibRichErrors.sol", "id": 228, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 9873, "src": "695:61:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol", "file": "@0x/contracts-utils/contracts/src/LibSafeMath.sol", "id": 229, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 11217, "src": "757:59:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/Refundable.sol", "file": "@0x/contracts-utils/contracts/src/Refundable.sol", "id": 230, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 11324, "src": "817:58:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibFillResults.sol", "id": 231, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 10640, "src": "876:70:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibMath.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibMath.sol", "id": 232, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 10918, "src": "947:63:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol", "id": 233, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 11029, "src": "1011:64:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol", "id": 234, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 8732, "src": "1076:79:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "id": 235, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 9343, "src": "1156:77:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IExchangeCore.sol", "file": "./interfaces/IExchangeCore.sol", "id": 236, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 7657, "src": "1234:40:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/MixinAssetProxyDispatcher.sol", "file": "./MixinAssetProxyDispatcher.sol", "id": 237, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 224, "src": "1275:41:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/MixinProtocolFees.sol", "file": "./MixinProtocolFees.sol", "id": 238, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 2070, "src": "1317:33:27", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/MixinSignatureValidator.sol", "file": "./MixinSignatureValidator.sol", "id": 239, "nodeType": "ImportDirective", "scope": 999, "sourceUnit": 3071, "src": "1351:39:27", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 240, "name": "IExchangeCore", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7656, "src": "1427:13:27", "typeDescriptions": {"typeIdentifier": "t_contract$_IExchangeCore_$7656", "typeString": "contract IExchangeCore"}}, "id": 241, "nodeType": "InheritanceSpecifier", "src": "1427:13:27"}, {"arguments": null, "baseName": {"contractScope": null, "id": 242, "name": "Refundable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11323, "src": "1446:10:27", "typeDescriptions": {"typeIdentifier": "t_contract$_Refundable_$11323", "typeString": "contract Refundable"}}, "id": 243, "nodeType": "InheritanceSpecifier", "src": "1446:10:27"}, {"arguments": null, "baseName": {"contractScope": null, "id": 244, "name": "LibEIP712ExchangeDomain", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8731, "src": "1462:23:27", "typeDescriptions": {"typeIdentifier": "t_contract$_LibEIP712ExchangeDomain_$8731", "typeString": "contract LibEIP712ExchangeDomain"}}, "id": 245, "nodeType": "InheritanceSpecifier", "src": "1462:23:27"}, {"arguments": null, "baseName": {"contractScope": null, "id": 246, "name": "MixinAssetProxyDispatcher", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 223, "src": "1491:25:27", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinAssetProxyDispatcher_$223", "typeString": "contract MixinAssetProxyDispatcher"}}, "id": 247, "nodeType": "InheritanceSpecifier", "src": "1491:25:27"}, {"arguments": null, "baseName": {"contractScope": null, "id": 248, "name": "MixinProtocolFees", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2069, "src": "1522:17:27", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinProtocolFees_$2069", "typeString": "contract MixinProtocolFees"}}, "id": 249, "nodeType": "InheritanceSpecifier", "src": "1522:17:27"}, {"arguments": null, "baseName": {"contractScope": null, "id": 250, "name": "MixinSignatureValidator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3070, "src": "1545:23:27", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinSignatureValidator_$3070", "typeString": "contract MixinSignatureValidator"}}, "id": 251, "nodeType": "InheritanceSpecifier", "src": "1545:23:27"}], "contractDependencies": [223, 2069, 3070, 3412, 7507, 7656, 7757, 7844, 7879, 8731, 9953, 11323, 11600, 11737, 11874], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 998, "linearizedBaseContracts": [998, 3070, 3412, 7879, 7844, 11600, 2069, 223, 8731, 11323, 11874, 7507, 9953, 11737, 7757, 7656], "name": "MixinExchangeCore", "nodeType": "ContractDefinition", "nodes": [{"id": 254, "libraryName": {"contractScope": null, "id": 252, "name": "LibOrder", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11028, "src": "1581:8:27", "typeDescriptions": {"typeIdentifier": "t_contract$_LibOrder_$11028", "typeString": "library LibOrder"}}, "nodeType": "UsingForDirective", "src": "1575:34:27", "typeName": {"contractScope": null, "id": 253, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "1594:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}}, {"id": 257, "libraryName": {"contractScope": null, "id": 255, "name": "LibSafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11216, "src": "1620:11:27", "typeDescriptions": {"typeIdentifier": "t_contract$_LibSafeMath_$11216", "typeString": "library LibSafeMath"}}, "nodeType": "UsingForDirective", "src": "1614:30:27", "typeName": {"id": 256, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1636:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"id": 260, "libraryName": {"contractScope": null, "id": 258, "name": "LibBytes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9843, "src": "1655:8:27", "typeDescriptions": {"typeIdentifier": "t_contract$_LibBytes_$9843", "typeString": "library LibBytes"}}, "nodeType": "UsingForDirective", "src": "1649:25:27", "typeName": {"id": 259, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1668:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, {"constant": false, "id": 264, "name": "filled", "nodeType": "VariableDeclaration", "scope": 998, "src": "1843:42:27", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)"}, "typeName": {"id": 263, "keyType": {"id": 261, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1852:7:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1843:28:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)"}, "valueType": {"id": 262, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1863:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, "value": null, "visibility": "public"}, {"constant": false, "id": 268, "name": "cancelled", "nodeType": "VariableDeclaration", "scope": 998, "src": "2019:42:27", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)"}, "typeName": {"id": 267, "keyType": {"id": 265, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2028:7:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "2019:25:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)"}, "valueType": {"id": 266, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2039:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}}, "value": null, "visibility": "public"}, {"constant": false, "id": 274, "name": "orderEpoch", "nodeType": "VariableDeclaration", "scope": 998, "src": "2431:67:27", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}, "typeName": {"id": 273, "keyType": {"id": 269, "name": "address", "nodeType": "ElementaryTypeName", "src": "2440:7:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "2431:49:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}, "valueType": {"id": 272, "keyType": {"id": 270, "name": "address", "nodeType": "ElementaryTypeName", "src": "2460:7:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "2451:28:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "valueType": {"id": 271, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2471:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}}, "value": null, "visibility": "public"}, {"body": {"id": 343, "nodeType": "Block", "src": "2947:1135:27", "statements": [{"assignments": [282], "declarations": [{"constant": false, "id": 282, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 343, "src": "2957:20:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 281, "name": "address", "nodeType": "ElementaryTypeName", "src": "2957:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 285, "initialValue": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 283, "name": "_getCurrentContextAddress", "nodeType": "Identifier", "overloadedDeclarations": [3411], "referencedDeclaration": 3411, "src": "2980:25:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 284, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2980:27:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2957:50:27"}, {"assignments": [287], "declarations": [{"constant": false, "id": 287, "name": "orderSenderAddress", "nodeType": "VariableDeclaration", "scope": 343, "src": "3265:26:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 286, "name": "address", "nodeType": "ElementaryTypeName", "src": "3265:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 298, "initialValue": {"argumentTypes": null, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 291, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 288, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, "src": "3294:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 289, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "3310:3:27", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3310:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "3294:26:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 295, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "3336:3:27", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3336:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "id": 297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "3294:52:27", "trueExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3331:1:27", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 292, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3323:7:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 294, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3323:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "nodeType": "VariableDeclarationStatement", "src": "3265:81:27"}, {"assignments": [300], "declarations": [{"constant": false, "id": 300, "name": "newOrderEpoch", "nodeType": "VariableDeclaration", "scope": 343, "src": "3434:21:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 299, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3434:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 304, "initialValue": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 301, "name": "targetOrderEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 276, "src": "3458:16:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "31", "id": 302, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3477:1:27", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3458:20:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "3434:44:27"}, {"assignments": [306], "declarations": [{"constant": false, "id": 306, "name": "oldOrderEpoch", "nodeType": "VariableDeclaration", "scope": 343, "src": "3488:21:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 305, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3488:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 312, "initialValue": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 307, "name": "orderEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, "src": "3512:10:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}}, "id": 309, "indexExpression": {"argumentTypes": null, "id": 308, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, "src": "3523:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3512:24:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 311, "indexExpression": {"argumentTypes": null, "id": 310, "name": "orderSenderAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "3537:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3512:44:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "3488:68:27"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 313, "name": "newOrderEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 300, "src": "3628:13:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"argumentTypes": null, "id": 314, "name": "oldOrderEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 306, "src": "3645:13:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3628:30:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 328, "nodeType": "IfStatement", "src": "3624:232:27", "trueBody": {"id": 327, "nodeType": "Block", "src": "3660:196:27", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 321, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, "src": "3751:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 322, "name": "orderSenderAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "3781:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 323, "name": "oldOrderEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 306, "src": "3817:13:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 319, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "3696:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderEpochError", "nodeType": "MemberAccess", "referencedDeclaration": 9150, "src": "3696:37:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,address,uint256) pure returns (bytes memory)"}}, "id": 324, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3696:148:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 316, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "3674:13:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 318, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "3674:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 325, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3674:171:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 326, "nodeType": "ExpressionStatement", "src": "3674:171:27"}]}}, {"expression": {"argumentTypes": null, "id": 335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 329, "name": "orderEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, "src": "3895:10:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}}, "id": 332, "indexExpression": {"argumentTypes": null, "id": 330, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, "src": "3906:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3895:24:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 333, "indexExpression": {"argumentTypes": null, "id": 331, "name": "orderSenderAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "3920:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3895:44:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 334, "name": "newOrderEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 300, "src": "3942:13:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3895:60:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 336, "nodeType": "ExpressionStatement", "src": "3895:60:27"}, {"eventCall": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 338, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, "src": "3994:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 339, "name": "orderSenderAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "4020:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 340, "name": "newOrderEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 300, "src": "4052:13:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 337, "name": "CancelUpTo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7627, "src": "3970:10:27", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 341, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3970:105:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 342, "nodeType": "EmitStatement", "src": "3965:110:27"}]}, "documentation": "@dev Cancels all orders created by makerAddress with a salt less than or equal to the targetOrderEpoch\n and senderAddress equal to msg.sender (or null address if msg.sender == makerAddress).\n @param targetOrderEpoch Orders created with a salt less or equal to this value will be cancelled.", "id": 344, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 279, "modifierName": {"argumentTypes": null, "id": 278, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "2915:27:27", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "2915:27:27"}], "name": "cancelOrdersUpTo", "nodeType": "FunctionDefinition", "parameters": {"id": 277, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 276, "name": "targetOrderEpoch", "nodeType": "VariableDeclaration", "scope": 344, "src": "2848:24:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 275, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2848:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2847:26:27"}, "returnParameters": {"id": 280, "nodeType": "ParameterList", "parameters": [], "src": "2947:0:27"}, "scope": 998, "src": "2822:1260:27", "stateMutability": "payable", "superFunction": 7632, "visibility": "external"}, {"body": {"id": 367, "nodeType": "Block", "src": "4678:155:27", "statements": [{"expression": {"argumentTypes": null, "id": 363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 357, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "4688:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 359, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 346, "src": "4726:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 360, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 348, "src": "4745:20:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 361, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 350, "src": "4779:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 358, "name": "_fillOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "4702:10:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,bytes memory) returns (struct LibFillResults.FillResults memory)"}}, "id": 362, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4702:96:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "4688:110:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 364, "nodeType": "ExpressionStatement", "src": "4688:110:27"}, {"expression": {"argumentTypes": null, "id": 365, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "4815:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "functionReturnParameters": 356, "id": 366, "nodeType": "Return", "src": "4808:18:27"}]}, "documentation": "@dev Fills the input order.\n @param order Order struct containing order specifications.\n @param takerAssetFillAmount Desired amount of takerAsset to sell.\n @param signature Proof that order has been created by maker.\n @return fillResults Amounts filled and fees paid by maker and taker.", "id": 368, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 353, "modifierName": {"argumentTypes": null, "id": 352, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "4582:27:27", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "4582:27:27"}], "name": "fillOrder", "nodeType": "FunctionDefinition", "parameters": {"id": 351, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 346, "name": "order", "nodeType": "VariableDeclaration", "scope": 368, "src": "4439:27:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 345, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4439:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 348, "name": "takerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 368, "src": "4476:28:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 347, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4476:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 350, "name": "signature", "nodeType": "VariableDeclaration", "scope": 368, "src": "4514:22:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 349, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4514:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "4429:113:27"}, "returnParameters": {"id": 356, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 355, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 368, "src": "4627:45:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 354, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "4627:26:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "4626:47:27"}, "scope": 998, "src": "4411:422:27", "stateMutability": "payable", "superFunction": 7643, "visibility": "public"}, {"body": {"id": 379, "nodeType": "Block", "src": "5092:36:27", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 376, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 370, "src": "5115:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}], "id": 375, "name": "_cancelOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 630, "src": "5102:12:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$returns$__$", "typeString": "function (struct LibOrder.Order memory)"}}, "id": 377, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5102:19:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 378, "nodeType": "ExpressionStatement", "src": "5102:19:27"}]}, "documentation": "@dev After calling, the order can not be filled anymore.\n @param order Order struct containing order specifications.", "id": 380, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 373, "modifierName": {"argumentTypes": null, "id": 372, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "5060:27:27", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "5060:27:27"}], "name": "cancelOrder", "nodeType": "FunctionDefinition", "parameters": {"id": 371, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 370, "name": "order", "nodeType": "VariableDeclaration", "scope": 380, "src": "4992:27:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 369, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4992:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}], "src": "4991:29:27"}, "returnParameters": {"id": 374, "nodeType": "ParameterList", "parameters": [], "src": "5092:0:27"}, "scope": 998, "src": "4971:157:27", "stateMutability": "payable", "superFunction": 7648, "visibility": "public"}, {"body": {"id": 512, "nodeType": "Block", "src": "5539:2168:27", "statements": [{"expression": {"argumentTypes": null, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 387, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "5648:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 389, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "5648:19:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 390, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "5669:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 391, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "orderTakerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10969, "src": "5669:37:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 392, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "5647:60:27", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", "typeString": "tuple(bytes32,uint256)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 394, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 382, "src": "5739:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}], "id": 393, "name": "_getOrderHashAndFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 997, "src": "5710:28:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$returns$_t_bytes32_$_t_uint256_$", "typeString": "function (struct LibOrder.Order memory) view returns (bytes32,uint256)"}}, "id": 395, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5710:35:27", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", "typeString": "tuple(bytes32,uint256)"}}, "src": "5647:98:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 397, "nodeType": "ExpressionStatement", "src": "5647:98:27"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 398, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 382, "src": "6047:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 399, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "6047:22:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 400, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6073:1:27", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6047:27:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 413, "nodeType": "IfStatement", "src": "6043:159:27", "trueBody": {"id": 412, "nodeType": "Block", "src": "6076:126:27", "statements": [{"expression": {"argumentTypes": null, "id": 408, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 402, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "6090:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 404, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "orderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10965, "src": "6090:21:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 405, "name": "LibOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11028, "src": "6114:8:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOrder_$11028_$", "typeString": "type(library LibOrder)"}}, "id": 406, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10934, "src": "6114:20:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_OrderStatus_$10934_$", "typeString": "type(enum LibOrder.OrderStatus)"}}, "id": 407, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_MAKER_ASSET_AMOUNT", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6114:47:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "src": "6090:71:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "id": 409, "nodeType": "ExpressionStatement", "src": "6090:71:27"}, {"expression": {"argumentTypes": null, "id": 410, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "6182:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "functionReturnParameters": 386, "id": 411, "nodeType": "Return", "src": "6175:16:27"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 414, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 382, "src": "6515:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 415, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "6515:22:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 416, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6541:1:27", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6515:27:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 429, "nodeType": "IfStatement", "src": "6511:159:27", "trueBody": {"id": 428, "nodeType": "Block", "src": "6544:126:27", "statements": [{"expression": {"argumentTypes": null, "id": 424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 418, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "6558:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 420, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "orderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10965, "src": "6558:21:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 421, "name": "LibOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11028, "src": "6582:8:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOrder_$11028_$", "typeString": "type(library LibOrder)"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10934, "src": "6582:20:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_OrderStatus_$10934_$", "typeString": "type(enum LibOrder.OrderStatus)"}}, "id": 423, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_TAKER_ASSET_AMOUNT", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6582:47:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "src": "6558:71:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "id": 425, "nodeType": "ExpressionStatement", "src": "6558:71:27"}, {"expression": {"argumentTypes": null, "id": 426, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "6650:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "functionReturnParameters": 386, "id": 427, "nodeType": "Return", "src": "6643:16:27"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 430, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "6723:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 431, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderTakerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10969, "src": "6723:37:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 432, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 382, "src": "6764:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 433, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "6764:22:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6723:63:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 446, "nodeType": "IfStatement", "src": "6719:181:27", "trueBody": {"id": 445, "nodeType": "Block", "src": "6788:112:27", "statements": [{"expression": {"argumentTypes": null, "id": 441, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 435, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "6802:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 437, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "orderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10965, "src": "6802:21:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 438, "name": "LibOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11028, "src": "6826:8:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOrder_$11028_$", "typeString": "type(library LibOrder)"}}, "id": 439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10934, "src": "6826:20:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_OrderStatus_$10934_$", "typeString": "type(enum LibOrder.OrderStatus)"}}, "id": 440, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "FULLY_FILLED", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6826:33:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "src": "6802:57:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "id": 442, "nodeType": "ExpressionStatement", "src": "6802:57:27"}, {"expression": {"argumentTypes": null, "id": 443, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "6880:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "functionReturnParameters": 386, "id": 444, "nodeType": "Return", "src": "6873:16:27"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 447, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12081, "src": "7005:5:27", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 448, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7005:15:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 449, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 382, "src": "7024:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 450, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expirationTimeSeconds", "nodeType": "MemberAccess", "referencedDeclaration": 10952, "src": "7024:27:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7005:46:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 463, "nodeType": "IfStatement", "src": "7001:159:27", "trueBody": {"id": 462, "nodeType": "Block", "src": "7053:107:27", "statements": [{"expression": {"argumentTypes": null, "id": 458, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 452, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7067:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "orderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10965, "src": "7067:21:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 455, "name": "LibOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11028, "src": "7091:8:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOrder_$11028_$", "typeString": "type(library LibOrder)"}}, "id": 456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10934, "src": "7091:20:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_OrderStatus_$10934_$", "typeString": "type(enum LibOrder.OrderStatus)"}}, "id": 457, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "EXPIRED", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7091:28:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "src": "7067:52:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "id": 459, "nodeType": "ExpressionStatement", "src": "7067:52:27"}, {"expression": {"argumentTypes": null, "id": 460, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7140:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "functionReturnParameters": 386, "id": 461, "nodeType": "Return", "src": "7133:16:27"}]}}, {"condition": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 464, "name": "cancelled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 268, "src": "7219:9:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)"}}, "id": 467, "indexExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 465, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7229:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 466, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "7229:19:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7219:30:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 479, "nodeType": "IfStatement", "src": "7215:145:27", "trueBody": {"id": 478, "nodeType": "Block", "src": "7251:109:27", "statements": [{"expression": {"argumentTypes": null, "id": 474, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 468, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7265:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 470, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "orderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10965, "src": "7265:21:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 471, "name": "LibOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11028, "src": "7289:8:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOrder_$11028_$", "typeString": "type(library LibOrder)"}}, "id": 472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10934, "src": "7289:20:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_OrderStatus_$10934_$", "typeString": "type(enum LibOrder.OrderStatus)"}}, "id": 473, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "CANCELLED", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7289:30:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "src": "7265:54:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "id": 475, "nodeType": "ExpressionStatement", "src": "7265:54:27"}, {"expression": {"argumentTypes": null, "id": 476, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7340:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "functionReturnParameters": 386, "id": 477, "nodeType": "Return", "src": "7333:16:27"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 480, "name": "orderEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, "src": "7373:10:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}}, "id": 483, "indexExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 481, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 382, "src": "7384:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 482, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "7384:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7373:30:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 486, "indexExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 484, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 382, "src": "7404:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 485, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "senderAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10942, "src": "7404:19:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7373:51:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 487, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 382, "src": "7427:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 488, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "salt", "nodeType": "MemberAccess", "referencedDeclaration": 10954, "src": "7427:10:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7373:64:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 501, "nodeType": "IfStatement", "src": "7369:179:27", "trueBody": {"id": 500, "nodeType": "Block", "src": "7439:109:27", "statements": [{"expression": {"argumentTypes": null, "id": 496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 490, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7453:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 492, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "orderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10965, "src": "7453:21:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 493, "name": "LibOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11028, "src": "7477:8:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOrder_$11028_$", "typeString": "type(library LibOrder)"}}, "id": 494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10934, "src": "7477:20:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_OrderStatus_$10934_$", "typeString": "type(enum LibOrder.OrderStatus)"}}, "id": 495, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "CANCELLED", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7477:30:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "src": "7453:54:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "id": 497, "nodeType": "ExpressionStatement", "src": "7453:54:27"}, {"expression": {"argumentTypes": null, "id": 498, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7528:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "functionReturnParameters": 386, "id": 499, "nodeType": "Return", "src": "7521:16:27"}]}}, {"expression": {"argumentTypes": null, "id": 508, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 502, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7621:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 504, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "orderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10965, "src": "7621:21:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 505, "name": "LibOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11028, "src": "7645:8:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOrder_$11028_$", "typeString": "type(library LibOrder)"}}, "id": 506, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10934, "src": "7645:20:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_OrderStatus_$10934_$", "typeString": "type(enum LibOrder.OrderStatus)"}}, "id": 507, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "FILLABLE", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7645:29:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "src": "7621:53:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "id": 509, "nodeType": "ExpressionStatement", "src": "7621:53:27"}, {"expression": {"argumentTypes": null, "id": 510, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7691:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "functionReturnParameters": 386, "id": 511, "nodeType": "Return", "src": "7684:16:27"}]}, "documentation": "@dev Gets information about an order: status, hash, and amount filled.\n @param order Order to gather information on.\n @return orderInfo Information about the order and its state.\n See LibOrder.OrderInfo for a complete description.", "id": 513, "implemented": true, "kind": "function", "modifiers": [], "name": "getOrderInfo", "nodeType": "FunctionDefinition", "parameters": {"id": 383, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 382, "name": "order", "nodeType": "VariableDeclaration", "scope": 513, "src": "5424:27:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 381, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "5424:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}], "src": "5423:29:27"}, "returnParameters": {"id": 386, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 385, "name": "orderInfo", "nodeType": "VariableDeclaration", "scope": 513, "src": "5498:35:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo"}, "typeName": {"contractScope": null, "id": 384, "name": "LibOrder.OrderInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10970, "src": "5498:18:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_storage_ptr", "typeString": "struct LibOrder.OrderInfo"}}, "value": null, "visibility": "internal"}], "src": "5497:37:27"}, "scope": 998, "src": "5402:2305:27", "stateMutability": "view", "superFunction": 7655, "visibility": "public"}, {"body": {"id": 595, "nodeType": "Block", "src": "8254:1334:27", "statements": [{"assignments": [527], "declarations": [{"constant": false, "id": 527, "name": "orderInfo", "nodeType": "VariableDeclaration", "scope": 595, "src": "8292:35:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo"}, "typeName": {"contractScope": null, "id": 526, "name": "LibOrder.OrderInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10970, "src": "8292:18:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_storage_ptr", "typeString": "struct LibOrder.OrderInfo"}}, "value": null, "visibility": "internal"}], "id": 531, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 529, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 515, "src": "8343:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}], "id": 528, "name": "getOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [513], "referencedDeclaration": 513, "src": "8330:12:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$returns$_t_struct$_OrderInfo_$10970_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory) view returns (struct LibOrder.OrderInfo memory)"}}, "id": 530, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8330:19:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "nodeType": "VariableDeclarationStatement", "src": "8292:57:27"}, {"assignments": [533], "declarations": [{"constant": false, "id": 533, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 595, "src": "8391:20:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 532, "name": "address", "nodeType": "ElementaryTypeName", "src": "8391:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 536, "initialValue": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 534, "name": "_getCurrentContextAddress", "nodeType": "Identifier", "overloadedDeclarations": [3411], "referencedDeclaration": 3411, "src": "8414:25:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 535, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8414:27:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "8391:50:27"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 538, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 515, "src": "8540:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 539, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "8559:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, {"argumentTypes": null, "id": 540, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "8582:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 541, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 519, "src": "8608:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 537, "name": "_assertFillableOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "8506:20:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_OrderInfo_$10970_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.OrderInfo memory,address,bytes memory) view"}}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8506:121:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 543, "nodeType": "ExpressionStatement", "src": "8506:121:27"}, {"assignments": [545], "declarations": [{"constant": false, "id": 545, "name": "remainingTakerAssetAmount", "nodeType": "VariableDeclaration", "scope": 595, "src": "8682:33:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 544, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8682:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 552, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 549, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "8749:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 550, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderTakerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10969, "src": "8749:37:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 546, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 515, "src": "8718:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 547, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "8718:22:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "8718:30:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 551, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8718:69:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "8682:105:27"}, {"assignments": [554], "declarations": [{"constant": false, "id": 554, "name": "takerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 595, "src": "8797:30:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 553, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8797:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 560, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 557, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 517, "src": "8849:20:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 558, "name": "remainingTakerAssetAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 545, "src": "8871:25:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 555, "name": "LibSafeMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11216, "src": "8830:11:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMath_$11216_$", "typeString": "type(library LibSafeMath)"}}, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "min256", "nodeType": "MemberAccess", "referencedDeclaration": 11215, "src": "8830:18:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8830:67:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "8797:100:27"}, {"expression": {"argumentTypes": null, "id": 570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 561, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 522, "src": "8953:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 564, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 515, "src": "9016:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 565, "name": "takerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 554, "src": "9035:22:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 566, "name": "protocolFeeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1831, "src": "9071:21:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 567, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12103, "src": "9106:2:27", "typeDescriptions": {"typeIdentifier": "t_magic_transaction", "typeString": "tx"}}, "id": 568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "gasprice", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9106:11:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 562, "name": "LibFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10639, "src": "8967:14:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibFillResults_$10639_$", "typeString": "type(library LibFillResults)"}}, "id": 563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "calculateFillResults", "nodeType": "MemberAccess", "referencedDeclaration": 10062, "src": "8967:35:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,uint256,uint256) pure returns (struct LibFillResults.FillResults memory)"}}, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8967:160:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "8953:174:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 571, "nodeType": "ExpressionStatement", "src": "8953:174:27"}, {"assignments": [573], "declarations": [{"constant": false, "id": 573, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 595, "src": "9138:17:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 572, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9138:7:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 576, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 574, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "9158:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 575, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "9158:19:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "9138:39:27"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 578, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 515, "src": "9262:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 579, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "9281:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 580, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 573, "src": "9307:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 581, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "9330:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 582, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderTakerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10969, "src": "9330:37:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 583, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 522, "src": "9381:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}], "id": 577, "name": "_updateFilledState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 683, "src": "9230:18:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_address_$_t_bytes32_$_t_uint256_$_t_struct$_FillResults_$9983_memory_ptr_$returns$__$", "typeString": "function (struct LibOrder.Order memory,address,bytes32,uint256,struct LibFillResults.FillResults memory)"}}, "id": 584, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9230:172:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 585, "nodeType": "ExpressionStatement", "src": "9230:172:27"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 587, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 573, "src": "9463:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 588, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 515, "src": "9486:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 589, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "9505:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 590, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 522, "src": "9531:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}], "id": 586, "name": "_settleOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "9437:12:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_Order_$10963_memory_ptr_$_t_address_$_t_struct$_FillResults_$9983_memory_ptr_$returns$__$", "typeString": "function (bytes32,struct LibOrder.Order memory,address,struct LibFillResults.FillResults memory)"}}, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9437:115:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 592, "nodeType": "ExpressionStatement", "src": "9437:115:27"}, {"expression": {"argumentTypes": null, "id": 593, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 522, "src": "9570:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "functionReturnParameters": 523, "id": 594, "nodeType": "Return", "src": "9563:18:27"}]}, "documentation": "@dev Fills the input order.\n @param order Order struct containing order specifications.\n @param takerAssetFillAmount Desired amount of takerAsset to sell.\n @param signature Proof that order has been created by maker.\n @return fillResults Amounts filled and fees paid by maker and taker.", "id": 596, "implemented": true, "kind": "function", "modifiers": [], "name": "_fillOrder", "nodeType": "FunctionDefinition", "parameters": {"id": 520, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 515, "name": "order", "nodeType": "VariableDeclaration", "scope": 596, "src": "8065:27:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 514, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "8065:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 517, "name": "takerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 596, "src": "8102:28:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 516, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8102:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 519, "name": "signature", "nodeType": "VariableDeclaration", "scope": 596, "src": "8140:22:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 518, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8140:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8055:113:27"}, "returnParameters": {"id": 523, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 522, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 596, "src": "8203:45:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 521, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "8203:26:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "8202:47:27"}, "scope": 998, "src": "8036:1552:27", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 629, "nodeType": "Block", "src": "9891:421:27", "statements": [{"assignments": [604], "declarations": [{"constant": false, "id": 604, "name": "orderInfo", "nodeType": "VariableDeclaration", "scope": 629, "src": "9939:35:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo"}, "typeName": {"contractScope": null, "id": 603, "name": "LibOrder.OrderInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10970, "src": "9939:18:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_storage_ptr", "typeString": "struct LibOrder.OrderInfo"}}, "value": null, "visibility": "internal"}], "id": 608, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 606, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 598, "src": "9990:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}], "id": 605, "name": "getOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [513], "referencedDeclaration": 513, "src": "9977:12:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$returns$_t_struct$_OrderInfo_$10970_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory) view returns (struct LibOrder.OrderInfo memory)"}}, "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9977:19:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "nodeType": "VariableDeclarationStatement", "src": "9939:57:27"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 610, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 598, "src": "10054:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 611, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 604, "src": "10061:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}], "id": 609, "name": "_assertValidCancel", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 892, "src": "10035:18:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_OrderInfo_$10970_memory_ptr_$returns$__$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.OrderInfo memory) view"}}, "id": 612, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10035:36:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 613, "nodeType": "ExpressionStatement", "src": "10035:36:27"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}, "id": 619, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 614, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 604, "src": "10133:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 615, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10965, "src": "10133:21:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 616, "name": "LibOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11028, "src": "10158:8:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOrder_$11028_$", "typeString": "type(library LibOrder)"}}, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10934, "src": "10158:20:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_OrderStatus_$10934_$", "typeString": "type(enum LibOrder.OrderStatus)"}}, "id": 618, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "FILLABLE", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10158:29:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "src": "10133:54:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 622, "nodeType": "IfStatement", "src": "10129:91:27", "trueBody": {"id": 621, "nodeType": "Block", "src": "10189:31:27", "statements": [{"expression": null, "functionReturnParameters": 600, "id": 620, "nodeType": "Return", "src": "10203:7:27"}]}}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 624, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 598, "src": "10278:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 625, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 604, "src": "10285:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 626, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "10285:19:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 623, "name": "_updateCancelledState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 711, "src": "10256:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_bytes32_$returns$__$", "typeString": "function (struct LibOrder.Order memory,bytes32)"}}, "id": 627, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10256:49:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 628, "nodeType": "ExpressionStatement", "src": "10256:49:27"}]}, "documentation": "@dev After calling, the order can not be filled anymore.\n Throws if order is invalid or sender does not have permission to cancel.\n @param order Order to cancel. Order must be OrderStatus.FILLABLE.", "id": 630, "implemented": true, "kind": "function", "modifiers": [], "name": "_cancelOrder", "nodeType": "FunctionDefinition", "parameters": {"id": 599, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 598, "name": "order", "nodeType": "VariableDeclaration", "scope": 630, "src": "9841:27:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 597, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "9841:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}], "src": "9840:29:27"}, "returnParameters": {"id": 600, "nodeType": "ParameterList", "parameters": [], "src": "9891:0:27"}, "scope": 998, "src": "9819:493:27", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 682, "nodeType": "Block", "src": "10804:661:27", "statements": [{"expression": {"argumentTypes": null, "id": 651, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 643, "name": "filled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 264, "src": "10838:6:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)"}}, "id": 645, "indexExpression": {"argumentTypes": null, "id": 644, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 636, "src": "10845:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10838:17:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 648, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "10894:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 649, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "10894:34:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 646, "name": "orderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 638, "src": "10858:27:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "10858:35:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 650, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10858:71:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10838:91:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 652, "nodeType": "ExpressionStatement", "src": "10838:91:27"}, {"eventCall": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 654, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "10963:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 655, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "10963:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 656, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "10995:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 657, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "feeRecipientAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10940, "src": "10995:25:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 658, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "11034:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 659, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10956, "src": "11034:20:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 660, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "11068:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10958, "src": "11068:20:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 662, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "11102:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 663, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10960, "src": "11102:23:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 664, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "11139:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 665, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10962, "src": "11139:23:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 666, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 636, "src": "11176:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 667, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 634, "src": "11199:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 668, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "11225:3:27", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 669, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11225:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 670, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "11249:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "11249:34:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 672, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "11297:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 673, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "11297:34:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 674, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "11345:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 675, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9978, "src": "11345:24:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 676, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "11383:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 677, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "11383:24:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 678, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "11421:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 679, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "11421:27:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address_payable", "typeString": "address payable"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 653, "name": "Fill", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7605, "src": "10945:4:27", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,bytes memory,bytes memory,bytes memory,bytes memory,bytes32,address,address,uint256,uint256,uint256,uint256,uint256)"}}, "id": 680, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10945:513:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 681, "nodeType": "EmitStatement", "src": "10940:518:27"}]}, "documentation": "@dev Updates state with results of a fill order.\n @param order that was filled.\n @param takerAddress Address of taker who filled the order.\n @param orderTakerAssetFilledAmount Amount of order already filled.", "id": 683, "implemented": true, "kind": "function", "modifiers": [], "name": "_updateFilledState", "nodeType": "FunctionDefinition", "parameters": {"id": 641, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 632, "name": "order", "nodeType": "VariableDeclaration", "scope": 683, "src": "10592:27:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 631, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "10592:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 634, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 683, "src": "10629:20:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 633, "name": "address", "nodeType": "ElementaryTypeName", "src": "10629:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 636, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 683, "src": "10659:17:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 635, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10659:7:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 638, "name": "orderTakerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 683, "src": "10686:35:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 637, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10686:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 640, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 683, "src": "10731:45:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 639, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "10731:26:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "10582:200:27"}, "returnParameters": {"id": 642, "nodeType": "ParameterList", "parameters": [], "src": "10804:0:27"}, "scope": 998, "src": "10555:910:27", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 710, "nodeType": "Block", "src": "11889:310:27", "statements": [{"expression": {"argumentTypes": null, "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 690, "name": "cancelled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 268, "src": "11925:9:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)"}}, "id": 692, "indexExpression": {"argumentTypes": null, "id": 691, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 687, "src": "11935:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11925:20:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "74727565", "id": 693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "11948:4:27", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "11925:27:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 695, "nodeType": "ExpressionStatement", "src": "11925:27:27"}, {"eventCall": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 697, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 685, "src": "12010:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 698, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "12010:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 699, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 685, "src": "12042:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 700, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "feeRecipientAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10940, "src": "12042:25:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 701, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 685, "src": "12081:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 702, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10956, "src": "12081:20:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 703, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 685, "src": "12115:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 704, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10958, "src": "12115:20:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 705, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "12149:3:27", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 706, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12149:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, {"argumentTypes": null, "id": 707, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 687, "src": "12173:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address_payable", "typeString": "address payable"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 696, "name": "Cancel", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7619, "src": "11990:6:27", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_address_$_t_bytes32_$returns$__$", "typeString": "function (address,address,bytes memory,bytes memory,address,bytes32)"}}, "id": 708, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11990:202:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 709, "nodeType": "EmitStatement", "src": "11985:207:27"}]}, "documentation": "@dev Updates state with results of cancelling an order.\n State is only updated if the order is currently fillable.\n Otherwise, updating state would have no effect.\n @param order that was cancelled.\n @param orderHash Hash of order that was cancelled.", "id": 711, "implemented": true, "kind": "function", "modifiers": [], "name": "_updateCancelledState", "nodeType": "FunctionDefinition", "parameters": {"id": 688, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 685, "name": "order", "nodeType": "VariableDeclaration", "scope": 711, "src": "11807:27:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 684, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "11807:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 687, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 711, "src": "11844:17:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 686, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11844:7:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "11797:70:27"}, "returnParameters": {"id": 689, "nodeType": "ParameterList", "parameters": [], "src": "11889:0:27"}, "scope": 998, "src": "11767:432:27", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 828, "nodeType": "Block", "src": "12730:1702:27", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}, "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 722, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "12810:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 723, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10965, "src": "12810:21:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 724, "name": "LibOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11028, "src": "12835:8:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOrder_$11028_$", "typeString": "type(library LibOrder)"}}, "id": 725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10934, "src": "12835:20:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_OrderStatus_$10934_$", "typeString": "type(enum LibOrder.OrderStatus)"}}, "id": 726, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "FILLABLE", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12835:29:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "src": "12810:54:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 744, "nodeType": "IfStatement", "src": "12806:258:27", "trueBody": {"id": 743, "nodeType": "Block", "src": "12866:198:27", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 733, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "12958:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 734, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "12958:19:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 737, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "13016:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 738, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10965, "src": "13016:21:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}], "expression": {"argumentTypes": null, "id": 735, "name": "LibOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11028, "src": "12995:8:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOrder_$11028_$", "typeString": "type(library LibOrder)"}}, "id": 736, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10934, "src": "12995:20:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_OrderStatus_$10934_$", "typeString": "type(enum LibOrder.OrderStatus)"}}, "id": 739, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12995:43:27", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}], "expression": {"argumentTypes": null, "id": 731, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "12902:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatusError", "nodeType": "MemberAccess", "referencedDeclaration": 9093, "src": "12902:38:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_enum$_OrderStatus_$10934_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes32,enum LibOrder.OrderStatus) pure returns (bytes memory)"}}, "id": 740, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12902:150:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 728, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "12880:13:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 730, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "12880:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 741, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12880:173:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 742, "nodeType": "ExpressionStatement", "src": "12880:173:27"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 745, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 713, "src": "13135:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 746, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "senderAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10942, "src": "13135:19:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13166:1:27", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 747, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "13158:7:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 749, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13158:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "13135:33:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 774, "nodeType": "IfStatement", "src": "13131:382:27", "trueBody": {"id": 773, "nodeType": "Block", "src": "13170:343:27", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 751, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 713, "src": "13188:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 752, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "senderAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10942, "src": "13188:19:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 753, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "13211:3:27", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 754, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13211:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "13188:33:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 772, "nodeType": "IfStatement", "src": "13184:319:27", "trueBody": {"id": 771, "nodeType": "Block", "src": "13223:280:27", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 761, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "13334:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 762, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ExchangeContextErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8747, "src": "13334:47:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_ExchangeContextErrorCodes_$8747_$", "typeString": "type(enum LibExchangeRichErrors.ExchangeContextErrorCodes)"}}, "id": 763, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_SENDER", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13334:62:27", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 764, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "13418:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 765, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "13418:19:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 766, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "13459:3:27", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13459:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address_payable", "typeString": "address payable"}], "expression": {"argumentTypes": null, "id": 759, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "13263:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 760, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ExchangeInvalidContextError", "nodeType": "MemberAccess", "referencedDeclaration": 9113, "src": "13263:49:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_ExchangeContextErrorCodes_$8747_$_t_bytes32_$_t_address_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.ExchangeContextErrorCodes,bytes32,address) pure returns (bytes memory)"}}, "id": 768, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13263:224:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 756, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "13241:13:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "13241:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 769, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13241:247:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 770, "nodeType": "ExpressionStatement", "src": "13241:247:27"}]}}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 775, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 713, "src": "13583:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 776, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10938, "src": "13583:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13613:1:27", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 777, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "13605:7:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13605:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "13583:32:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 802, "nodeType": "IfStatement", "src": "13579:383:27", "trueBody": {"id": 801, "nodeType": "Block", "src": "13617:345:27", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 781, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 713, "src": "13635:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 782, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10938, "src": "13635:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 783, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 717, "src": "13657:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "13635:34:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 800, "nodeType": "IfStatement", "src": "13631:321:27", "trueBody": {"id": 799, "nodeType": "Block", "src": "13671:281:27", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 790, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "13782:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 791, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ExchangeContextErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8747, "src": "13782:47:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_ExchangeContextErrorCodes_$8747_$", "typeString": "type(enum LibExchangeRichErrors.ExchangeContextErrorCodes)"}}, "id": 792, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_TAKER", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13782:61:27", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 793, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "13865:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 794, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "13865:19:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 795, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 717, "src": "13906:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 788, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "13711:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ExchangeInvalidContextError", "nodeType": "MemberAccess", "referencedDeclaration": 9113, "src": "13711:49:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_ExchangeContextErrorCodes_$8747_$_t_bytes32_$_t_address_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.ExchangeContextErrorCodes,bytes32,address) pure returns (bytes memory)"}}, "id": 796, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13711:225:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 785, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "13689:13:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "13689:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 797, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13689:248:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 798, "nodeType": "ExpressionStatement", "src": "13689:248:27"}]}}]}}, {"condition": {"argumentTypes": null, "id": 809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "14006:132:27", "subExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 804, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 713, "src": "14055:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 805, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "14078:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 806, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "14078:19:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 807, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 719, "src": "14115:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 803, "name": "_isValidOrderWithHashSignature", "nodeType": "Identifier", "overloadedDeclarations": [2348], "referencedDeclaration": 2348, "src": "14007:30:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (struct LibOrder.Order memory,bytes32,bytes memory) view returns (bool)"}}, "id": 808, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14007:131:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 827, "nodeType": "IfStatement", "src": "14002:424:27", "trueBody": {"id": 826, "nodeType": "Block", "src": "14149:277:27", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 815, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "14239:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "14239:41:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 817, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "BAD_ORDER_SIGNATURE", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14239:61:27", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 818, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "14318:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 819, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "14318:19:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 820, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 713, "src": "14355:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 821, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "14355:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 822, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 719, "src": "14391:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 813, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "14185:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9013, "src": "14185:36:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_SignatureErrorCodes_$8760_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.SignatureErrorCodes,bytes32,address,bytes memory) pure returns (bytes memory)"}}, "id": 823, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14185:229:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 810, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "14163:13:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "14163:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 824, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14163:252:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 825, "nodeType": "ExpressionStatement", "src": "14163:252:27"}]}}]}, "documentation": "@dev Validates context for fillOrder. Succeeds or throws.\n @param order to be filled.\n @param orderInfo OrderStatus, orderHash, and amount already filled of order.\n @param takerAddress Address of order taker.\n @param signature Proof that the orders was created by its maker.", "id": 829, "implemented": true, "kind": "function", "modifiers": [], "name": "_assertFillableOrder", "nodeType": "FunctionDefinition", "parameters": {"id": 720, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 713, "name": "order", "nodeType": "VariableDeclaration", "scope": 829, "src": "12555:27:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 712, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "12555:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 715, "name": "orderInfo", "nodeType": "VariableDeclaration", "scope": 829, "src": "12592:35:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo"}, "typeName": {"contractScope": null, "id": 714, "name": "LibOrder.OrderInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10970, "src": "12592:18:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_storage_ptr", "typeString": "struct LibOrder.OrderInfo"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 717, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 829, "src": "12637:20:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 716, "name": "address", "nodeType": "ElementaryTypeName", "src": "12637:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 719, "name": "signature", "nodeType": "VariableDeclaration", "scope": 829, "src": "12667:22:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 718, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12667:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "12545:150:27"}, "returnParameters": {"id": 721, "nodeType": "ParameterList", "parameters": [], "src": "12730:0:27"}, "scope": 998, "src": "12516:1916:27", "stateMutability": "view", "superFunction": null, "visibility": "internal"}, {"body": {"id": 891, "nodeType": "Block", "src": "14779:872:27", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 841, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 836, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 831, "src": "14852:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 837, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "senderAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10942, "src": "14852:19:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14883:1:27", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 838, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "14875:7:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14875:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "14852:33:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 865, "nodeType": "IfStatement", "src": "14848:382:27", "trueBody": {"id": 864, "nodeType": "Block", "src": "14887:343:27", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 846, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 842, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 831, "src": "14905:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 843, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "senderAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10942, "src": "14905:19:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 844, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "14928:3:27", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14928:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "14905:33:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 863, "nodeType": "IfStatement", "src": "14901:319:27", "trueBody": {"id": 862, "nodeType": "Block", "src": "14940:280:27", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 852, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "15051:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 853, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ExchangeContextErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8747, "src": "15051:47:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_ExchangeContextErrorCodes_$8747_$", "typeString": "type(enum LibExchangeRichErrors.ExchangeContextErrorCodes)"}}, "id": 854, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_SENDER", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15051:62:27", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 855, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "15135:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 856, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "15135:19:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 857, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "15176:3:27", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15176:10:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address_payable", "typeString": "address payable"}], "expression": {"argumentTypes": null, "id": 850, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "14980:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 851, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ExchangeInvalidContextError", "nodeType": "MemberAccess", "referencedDeclaration": 9113, "src": "14980:49:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_ExchangeContextErrorCodes_$8747_$_t_bytes32_$_t_address_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.ExchangeContextErrorCodes,bytes32,address) pure returns (bytes memory)"}}, "id": 859, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14980:224:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 847, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "14958:13:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 849, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "14958:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14958:247:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 861, "nodeType": "ExpressionStatement", "src": "14958:247:27"}]}}]}}, {"assignments": [867], "declarations": [{"constant": false, "id": 867, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 891, "src": "15288:20:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 866, "name": "address", "nodeType": "ElementaryTypeName", "src": "15288:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 870, "initialValue": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 868, "name": "_getCurrentContextAddress", "nodeType": "Identifier", "overloadedDeclarations": [3411], "referencedDeclaration": 3411, "src": "15311:25:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 869, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15311:27:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "15288:50:27"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 874, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 871, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 831, "src": "15352:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 872, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "15352:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 873, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 867, "src": "15374:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "15352:34:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 890, "nodeType": "IfStatement", "src": "15348:297:27", "trueBody": {"id": 889, "nodeType": "Block", "src": "15388:257:27", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 880, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "15491:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 881, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ExchangeContextErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8747, "src": "15491:47:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_ExchangeContextErrorCodes_$8747_$", "typeString": "type(enum LibExchangeRichErrors.ExchangeContextErrorCodes)"}}, "id": 882, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_MAKER", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15491:61:27", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 883, "name": "orderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "15570:9:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 884, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "15570:19:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 885, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 867, "src": "15607:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 878, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "15424:21:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 879, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ExchangeInvalidContextError", "nodeType": "MemberAccess", "referencedDeclaration": 9113, "src": "15424:49:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_ExchangeContextErrorCodes_$8747_$_t_bytes32_$_t_address_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.ExchangeContextErrorCodes,bytes32,address) pure returns (bytes memory)"}}, "id": 886, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15424:209:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 875, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "15402:13:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 877, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "15402:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 887, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15402:232:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 888, "nodeType": "ExpressionStatement", "src": "15402:232:27"}]}}]}, "documentation": "@dev Validates context for cancelOrder. Succeeds or throws.\n @param order to be cancelled.\n @param orderInfo OrderStatus, orderHash, and amount already filled of order.", "id": 892, "implemented": true, "kind": "function", "modifiers": [], "name": "_assertValidCancel", "nodeType": "FunctionDefinition", "parameters": {"id": 834, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 831, "name": "order", "nodeType": "VariableDeclaration", "scope": 892, "src": "14666:27:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 830, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "14666:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 833, "name": "orderInfo", "nodeType": "VariableDeclaration", "scope": 892, "src": "14703:35:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo"}, "typeName": {"contractScope": null, "id": 832, "name": "LibOrder.OrderInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10970, "src": "14703:18:27", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_storage_ptr", "typeString": "struct LibOrder.OrderInfo"}}, "value": null, "visibility": "internal"}], "src": "14656:88:27"}, "returnParameters": {"id": 835, "nodeType": "ParameterList", "parameters": [], "src": "14779:0:27"}, "scope": 998, "src": "14629:1022:27", "stateMutability": "view", "superFunction": null, "visibility": "internal"}, {"body": {"id": 969, "nodeType": "Block", "src": "16200:1387:27", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 904, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 894, "src": "16280:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 905, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 896, "src": "16303:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 906, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10958, "src": "16303:20:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 907, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 898, "src": "16337:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 908, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 896, "src": "16363:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 909, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "16363:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 910, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 900, "src": "16395:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 911, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "16395:34:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 903, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "16245:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 912, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16245:194:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 913, "nodeType": "ExpressionStatement", "src": "16245:194:27"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 915, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 894, "src": "16520:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 916, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 896, "src": "16543:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 917, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10956, "src": "16543:20:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 918, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 896, "src": "16577:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 919, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "16577:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 920, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 898, "src": "16609:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 921, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 900, "src": "16635:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 922, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "16635:34:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 914, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "16485:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 923, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16485:194:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 924, "nodeType": "ExpressionStatement", "src": "16485:194:27"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 926, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 894, "src": "16771:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 927, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 896, "src": "16794:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 928, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10962, "src": "16794:23:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 929, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 898, "src": "16831:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 930, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 896, "src": "16857:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 931, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "feeRecipientAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10940, "src": "16857:25:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 932, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 900, "src": "16896:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 933, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "16896:24:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 925, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "16736:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 934, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16736:194:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 935, "nodeType": "ExpressionStatement", "src": "16736:194:27"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 937, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 894, "src": "17022:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 938, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 896, "src": "17045:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 939, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10960, "src": "17045:23:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 940, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 896, "src": "17082:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 941, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "17082:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 942, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 896, "src": "17114:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 943, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "feeRecipientAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10940, "src": "17114:25:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 944, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 900, "src": "17153:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 945, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9978, "src": "17153:24:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 936, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "16987:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 946, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16987:200:27", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 947, "nodeType": "ExpressionStatement", "src": "16987:200:27"}, {"assignments": [949], "declarations": [{"constant": false, "id": 949, "name": "didPayProtocolFee", "nodeType": "VariableDeclaration", "scope": 969, "src": "17226:22:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 948, "name": "bool", "nodeType": "ElementaryTypeName", "src": "17226:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "id": 958, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 951, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 894, "src": "17286:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 952, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 900, "src": "17309:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 953, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "17309:27:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 954, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 896, "src": "17350:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 955, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "17350:18:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 956, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 898, "src": "17382:12:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 950, "name": "_paySingleProtocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1931, "src": "17251:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (bytes32,uint256,address,address) returns (bool)"}}, "id": 957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17251:153:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "17226:178:27"}, {"condition": {"argumentTypes": null, "id": 960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "17505:18:27", "subExpression": {"argumentTypes": null, "id": 959, "name": "didPayProtocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 949, "src": "17506:17:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 968, "nodeType": "IfStatement", "src": "17501:80:27", "trueBody": {"id": 967, "nodeType": "Block", "src": "17525:56:27", "statements": [{"expression": {"argumentTypes": null, "id": 965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 961, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 900, "src": "17539:11:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 963, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "17539:27:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "30", "id": 964, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17569:1:27", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "17539:31:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 966, "nodeType": "ExpressionStatement", "src": "17539:31:27"}]}}]}, "documentation": "@dev Settles an order by transferring assets between counterparties.\n @param orderHash The order hash.\n @param order Order struct containing order specifications.\n @param takerAddress Address selling takerAsset and buying makerAsset.\n @param fillResults Amounts to be filled and fees paid by maker and taker.", "id": 970, "implemented": true, "kind": "function", "modifiers": [], "name": "_settleOrder", "nodeType": "FunctionDefinition", "parameters": {"id": 901, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 894, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 970, "src": "16033:17:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 893, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "16033:7:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 896, "name": "order", "nodeType": "VariableDeclaration", "scope": 970, "src": "16060:27:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 895, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "16060:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 898, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 970, "src": "16097:20:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 897, "name": "address", "nodeType": "ElementaryTypeName", "src": "16097:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 900, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 970, "src": "16127:45:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 899, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "16127:26:27", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "16023:155:27"}, "returnParameters": {"id": 902, "nodeType": "ParameterList", "parameters": [], "src": "16200:0:27"}, "scope": 998, "src": "16002:1585:27", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 996, "nodeType": "Block", "src": "17992:194:27", "statements": [{"expression": {"argumentTypes": null, "id": 984, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 979, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 975, "src": "18002:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 982, "name": "EIP712_EXCHANGE_DOMAIN_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8699, "src": "18037:27:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 980, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "18014:5:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 981, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "getTypedDataHash", "nodeType": "MemberAccess", "referencedDeclaration": 10992, "src": "18014:22:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Order_$10963_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,bytes32) pure returns (bytes32)"}}, "id": 983, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18014:51:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "18002:63:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 985, "nodeType": "ExpressionStatement", "src": "18002:63:27"}, {"expression": {"argumentTypes": null, "id": 990, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 986, "name": "orderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 977, "src": "18075:27:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 987, "name": "filled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 264, "src": "18105:6:27", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)"}}, "id": 989, "indexExpression": {"argumentTypes": null, "id": 988, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 975, "src": "18112:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18105:17:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18075:47:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 991, "nodeType": "ExpressionStatement", "src": "18075:47:27"}, {"expression": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 992, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 975, "src": "18140:9:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 993, "name": "orderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 977, "src": "18151:27:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 994, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "18139:40:27", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", "typeString": "tuple(bytes32,uint256)"}}, "functionReturnParameters": 978, "id": 995, "nodeType": "Return", "src": "18132:47:27"}]}, "documentation": "@dev Gets the order's hash and amount of takerAsset that has already been filled.\n @param order Order struct containing order specifications.\n @return The typed data hash and amount filled of the order.", "id": 997, "implemented": true, "kind": "function", "modifiers": [], "name": "_getOrderHashAndFilledAmount", "nodeType": "FunctionDefinition", "parameters": {"id": 973, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 972, "name": "order", "nodeType": "VariableDeclaration", "scope": 997, "src": "17856:27:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 971, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "17856:14:27", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}], "src": "17855:29:27"}, "returnParameters": {"id": 978, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 975, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 997, "src": "17932:17:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 974, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "17932:7:27", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 977, "name": "orderTakerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 997, "src": "17951:35:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 976, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "17951:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "17931:56:27"}, "scope": 998, "src": "17818:368:27", "stateMutability": "view", "superFunction": null, "visibility": "internal"}], "scope": 999, "src": "1393:16795:27"}], "src": "579:17610:27"}, "id": 27}, "contracts/exchange/MixinMatchOrders.sol": {"ast": {"absolutePath": "contracts/exchange/MixinMatchOrders.sol", "exportedSymbols": {"MixinMatchOrders": [1818]}, "id": 1819, "nodeType": "SourceUnit", "nodes": [{"id": 1000, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "579:23:28"}, {"id": 1001, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "603:33:28"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibBytes.sol", "file": "@0x/contracts-utils/contracts/src/LibBytes.sol", "id": 1002, "nodeType": "ImportDirective", "scope": 1819, "sourceUnit": 9844, "src": "638:56:28", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "@0x/contracts-utils/contracts/src/LibRichErrors.sol", "id": 1003, "nodeType": "ImportDirective", "scope": 1819, "sourceUnit": 9873, "src": "695:61:28", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol", "id": 1004, "nodeType": "ImportDirective", "scope": 1819, "sourceUnit": 11029, "src": "757:64:28", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibFillResults.sol", "id": 1005, "nodeType": "ImportDirective", "scope": 1819, "sourceUnit": 10640, "src": "822:70:28", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "id": 1006, "nodeType": "ImportDirective", "scope": 1819, "sourceUnit": 9343, "src": "893:77:28", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IMatchOrders.sol", "file": "./interfaces/IMatchOrders.sol", "id": 1007, "nodeType": "ImportDirective", "scope": 1819, "sourceUnit": 7723, "src": "971:39:28", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/MixinExchangeCore.sol", "file": "./MixinExchangeCore.sol", "id": 1008, "nodeType": "ImportDirective", "scope": 1819, "sourceUnit": 999, "src": "1011:33:28", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 1009, "name": "MixinExchangeCore", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 998, "src": "1080:17:28", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinExchangeCore_$998", "typeString": "contract MixinExchangeCore"}}, "id": 1010, "nodeType": "InheritanceSpecifier", "src": "1080:17:28"}, {"arguments": null, "baseName": {"contractScope": null, "id": 1011, "name": "IMatchOrders", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7722, "src": "1103:12:28", "typeDescriptions": {"typeIdentifier": "t_contract$_IMatchOrders_$7722", "typeString": "contract IMatchOrders"}}, "id": 1012, "nodeType": "InheritanceSpecifier", "src": "1103:12:28"}], "contractDependencies": [223, 998, 2069, 3070, 3412, 7507, 7656, 7722, 7757, 7844, 7879, 8731, 9953, 11323, 11600, 11737, 11874], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 1818, "linearizedBaseContracts": [1818, 7722, 998, 3070, 3412, 7879, 7844, 11600, 2069, 223, 8731, 11323, 11874, 7507, 9953, 11737, 7757, 7656], "name": "MixinMatchOrders", "nodeType": "ContractDefinition", "nodes": [{"id": 1015, "libraryName": {"contractScope": null, "id": 1013, "name": "LibBytes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9843, "src": "1128:8:28", "typeDescriptions": {"typeIdentifier": "t_contract$_LibBytes_$9843", "typeString": "library LibBytes"}}, "nodeType": "UsingForDirective", "src": "1122:25:28", "typeName": {"id": 1014, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1141:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, {"id": 1018, "libraryName": {"contractScope": null, "id": 1016, "name": "LibSafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11216, "src": "1158:11:28", "typeDescriptions": {"typeIdentifier": "t_contract$_LibSafeMath_$11216", "typeString": "library LibSafeMath"}}, "nodeType": "UsingForDirective", "src": "1152:30:28", "typeName": {"id": 1017, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1174:7:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"id": 1021, "libraryName": {"contractScope": null, "id": 1019, "name": "LibOrder", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11028, "src": "1193:8:28", "typeDescriptions": {"typeIdentifier": "t_contract$_LibOrder_$11028", "typeString": "library LibOrder"}}, "nodeType": "UsingForDirective", "src": "1187:34:28", "typeName": {"contractScope": null, "id": 1020, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "1206:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}}, {"body": {"id": 1048, "nodeType": "Block", "src": "2206:176:28", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1041, "name": "leftOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1024, "src": "2254:10:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, {"argumentTypes": null, "id": 1042, "name": "rightOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2278:11:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, {"argumentTypes": null, "id": 1043, "name": "leftSignatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1030, "src": "2303:14:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, {"argumentTypes": null, "id": 1044, "name": "rightSignatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1033, "src": "2331:15:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, {"argumentTypes": null, "hexValue": "66616c7365", "id": 1045, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2360:5:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}, {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}, {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}, {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1040, "name": "_batchMatchOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1508, "src": "2223:17:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr_$_t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr_$_t_array$_t_bytes_memory_$dyn_memory_ptr_$_t_array$_t_bytes_memory_$dyn_memory_ptr_$_t_bool_$returns$_t_struct$_BatchMatchedFillResults_$9972_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory[] memory,struct LibOrder.Order memory[] memory,bytes memory[] memory,bytes memory[] memory,bool) returns (struct LibFillResults.BatchMatchedFillResults memory)"}}, "id": 1046, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2223:152:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "functionReturnParameters": 1039, "id": 1047, "nodeType": "Return", "src": "2216:159:28"}]}, "documentation": "@dev Match complementary orders that have a profitable spread.\n Each order is filled at their respective price point, and\n the matcher receives a profit denominated in the left maker asset.\n @param leftOrders Set of orders with the same maker / taker asset.\n @param rightOrders Set of orders to match against `leftOrders`\n @param leftSignatures Proof that left orders were created by the left makers.\n @param rightSignatures Proof that right orders were created by the right makers.\n @return batchMatchedFillResults Amounts filled and profit generated.", "id": 1049, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 1036, "modifierName": {"argumentTypes": null, "id": 1035, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "2086:27:28", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "2086:27:28"}], "name": "batchMatchOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 1034, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1024, "name": "leftOrders", "nodeType": "VariableDeclaration", "scope": 1049, "src": "1882:34:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 1022, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "1882:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 1023, "length": null, "nodeType": "ArrayTypeName", "src": "1882:16:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1027, "name": "rightOrders", "nodeType": "VariableDeclaration", "scope": 1049, "src": "1926:35:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 1025, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "1926:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 1026, "length": null, "nodeType": "ArrayTypeName", "src": "1926:16:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1030, "name": "leftSignatures", "nodeType": "VariableDeclaration", "scope": 1049, "src": "1971:29:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 1028, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1971:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 1029, "length": null, "nodeType": "ArrayTypeName", "src": "1971:7:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1033, "name": "rightSignatures", "nodeType": "VariableDeclaration", "scope": 1049, "src": "2010:30:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 1031, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2010:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 1032, "length": null, "nodeType": "ArrayTypeName", "src": "2010:7:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "1872:174:28"}, "returnParameters": {"id": 1039, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1038, "name": "batchMatchedFillResults", "nodeType": "VariableDeclaration", "scope": 1049, "src": "2131:69:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults"}, "typeName": {"contractScope": null, "id": 1037, "name": "LibFillResults.BatchMatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9972, "src": "2131:38:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_storage_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "2130:71:28"}, "scope": 1818, "src": "1847:535:28", "stateMutability": "payable", "superFunction": 7678, "visibility": "public"}, {"body": {"id": 1076, "nodeType": "Block", "src": "3457:175:28", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1069, "name": "leftOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1052, "src": "3505:10:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, {"argumentTypes": null, "id": 1070, "name": "rightOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1055, "src": "3529:11:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, {"argumentTypes": null, "id": 1071, "name": "leftSignatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1058, "src": "3554:14:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, {"argumentTypes": null, "id": 1072, "name": "rightSignatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1061, "src": "3582:15:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, {"argumentTypes": null, "hexValue": "74727565", "id": 1073, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3611:4:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}, {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}, {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}, {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1068, "name": "_batchMatchOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1508, "src": "3474:17:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr_$_t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr_$_t_array$_t_bytes_memory_$dyn_memory_ptr_$_t_array$_t_bytes_memory_$dyn_memory_ptr_$_t_bool_$returns$_t_struct$_BatchMatchedFillResults_$9972_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory[] memory,struct LibOrder.Order memory[] memory,bytes memory[] memory,bytes memory[] memory,bool) returns (struct LibFillResults.BatchMatchedFillResults memory)"}}, "id": 1074, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3474:151:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "functionReturnParameters": 1067, "id": 1075, "nodeType": "Return", "src": "3467:158:28"}]}, "documentation": "@dev Match complementary orders that have a profitable spread.\n Each order is maximally filled at their respective price point, and\n the matcher receives a profit denominated in either the left maker asset,\n right maker asset, or a combination of both.\n @param leftOrders Set of orders with the same maker / taker asset.\n @param rightOrders Set of orders to match against `leftOrders`\n @param leftSignatures Proof that left orders were created by the left makers.\n @param rightSignatures Proof that right orders were created by the right makers.\n @return batchMatchedFillResults Amounts filled and profit generated.", "id": 1077, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 1064, "modifierName": {"argumentTypes": null, "id": 1063, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "3337:27:28", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "3337:27:28"}], "name": "batchMatchOrdersWithMaximalFill", "nodeType": "FunctionDefinition", "parameters": {"id": 1062, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1052, "name": "leftOrders", "nodeType": "VariableDeclaration", "scope": 1077, "src": "3133:34:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 1050, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "3133:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 1051, "length": null, "nodeType": "ArrayTypeName", "src": "3133:16:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1055, "name": "rightOrders", "nodeType": "VariableDeclaration", "scope": 1077, "src": "3177:35:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 1053, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "3177:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 1054, "length": null, "nodeType": "ArrayTypeName", "src": "3177:16:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1058, "name": "leftSignatures", "nodeType": "VariableDeclaration", "scope": 1077, "src": "3222:29:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 1056, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3222:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 1057, "length": null, "nodeType": "ArrayTypeName", "src": "3222:7:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1061, "name": "rightSignatures", "nodeType": "VariableDeclaration", "scope": 1077, "src": "3261:30:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 1059, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3261:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 1060, "length": null, "nodeType": "ArrayTypeName", "src": "3261:7:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "3123:174:28"}, "returnParameters": {"id": 1067, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1066, "name": "batchMatchedFillResults", "nodeType": "VariableDeclaration", "scope": 1077, "src": "3382:69:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults"}, "typeName": {"contractScope": null, "id": 1065, "name": "LibFillResults.BatchMatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9972, "src": "3382:38:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_storage_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "3381:71:28"}, "scope": 1818, "src": "3083:549:28", "stateMutability": "payable", "superFunction": 7695, "visibility": "public"}, {"body": {"id": 1100, "nodeType": "Block", "src": "4693:167:28", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1093, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1079, "src": "4736:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1094, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1081, "src": "4759:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1095, "name": "leftSignature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1083, "src": "4783:13:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1096, "name": "rightSignature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1085, "src": "4810:14:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "hexValue": "66616c7365", "id": 1097, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4838:5:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1092, "name": "_matchOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1633, "src": "4710:12:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_Order_$10963_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_struct$_MatchedFillResults_$9992_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.Order memory,bytes memory,bytes memory,bool) returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4710:143:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 1091, "id": 1099, "nodeType": "Return", "src": "4703:150:28"}]}, "documentation": "@dev Match two complementary orders that have a profitable spread.\n Each order is filled at their respective price point. However, the calculations are\n carried out as though the orders are both being filled at the right order's price point.\n The profit made by the left order goes to the taker (who matched the two orders).\n @param leftOrder First order to match.\n @param rightOrder Second order to match.\n @param leftSignature Proof that order was created by the left maker.\n @param rightSignature Proof that order was created by the right maker.\n @return matchedFillResults Amounts filled and fees paid by maker and taker of matched orders.", "id": 1101, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 1088, "modifierName": {"argumentTypes": null, "id": 1087, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "4583:27:28", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "4583:27:28"}], "name": "matchOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 1086, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1079, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 1101, "src": "4391:31:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1078, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4391:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1081, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 1101, "src": "4432:32:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1080, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4432:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1083, "name": "leftSignature", "nodeType": "VariableDeclaration", "scope": 1101, "src": "4474:26:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1082, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4474:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1085, "name": "rightSignature", "nodeType": "VariableDeclaration", "scope": 1101, "src": "4510:27:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1084, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4510:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "4381:162:28"}, "returnParameters": {"id": 1091, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1090, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 1101, "src": "4628:59:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 1089, "name": "LibFillResults.MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "4628:33:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "4627:61:28"}, "scope": 1818, "src": "4361:499:28", "stateMutability": "payable", "superFunction": 7708, "visibility": "public"}, {"body": {"id": 1124, "nodeType": "Block", "src": "5854:166:28", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1117, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "5897:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1118, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1105, "src": "5920:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1119, "name": "leftSignature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1107, "src": "5944:13:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1120, "name": "rightSignature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1109, "src": "5971:14:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "hexValue": "74727565", "id": 1121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5999:4:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1116, "name": "_matchOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1633, "src": "5871:12:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_Order_$10963_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_struct$_MatchedFillResults_$9992_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.Order memory,bytes memory,bytes memory,bool) returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5871:142:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 1115, "id": 1123, "nodeType": "Return", "src": "5864:149:28"}]}, "documentation": "@dev Match two complementary orders that have a profitable spread.\n Each order is maximally filled at their respective price point, and\n the matcher receives a profit denominated in either the left maker asset,\n right maker asset, or a combination of both.\n @param leftOrder First order to match.\n @param rightOrder Second order to match.\n @param leftSignature Proof that order was created by the left maker.\n @param rightSignature Proof that order was created by the right maker.\n @return matchedFillResults Amounts filled by maker and taker of matched orders.", "id": 1125, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 1112, "modifierName": {"argumentTypes": null, "id": 1111, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "5744:27:28", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "5744:27:28"}], "name": "matchOrdersWithMaximalFill", "nodeType": "FunctionDefinition", "parameters": {"id": 1110, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1103, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 1125, "src": "5552:31:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1102, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "5552:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1105, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 1125, "src": "5593:32:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1104, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "5593:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1107, "name": "leftSignature", "nodeType": "VariableDeclaration", "scope": 1125, "src": "5635:26:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1106, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5635:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1109, "name": "rightSignature", "nodeType": "VariableDeclaration", "scope": 1125, "src": "5671:27:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1108, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5671:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "5542:162:28"}, "returnParameters": {"id": 1115, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1114, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 1125, "src": "5789:59:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 1113, "name": "LibFillResults.MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "5789:33:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "5788:61:28"}, "scope": 1818, "src": "5507:513:28", "stateMutability": "payable", "superFunction": 7721, "visibility": "public"}, {"body": {"id": 1161, "nodeType": "Block", "src": "6515:1023:28", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1139, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1129, "src": "7258:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1140, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "7258:27:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1136, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1127, "src": "7223:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1137, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "7223:26:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1138, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "7223:34:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 1141, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7223:63:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1145, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1129, "src": "7336:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1146, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "7336:27:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1142, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1127, "src": "7301:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1143, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "7301:26:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "7301:34:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 1147, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7301:63:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7223:141:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 1160, "nodeType": "IfStatement", "src": "7219:313:28", "trueBody": {"id": 1159, "nodeType": "Block", "src": "7366:166:28", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1154, "name": "leftOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1131, "src": "7461:13:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 1155, "name": "rightOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1133, "src": "7492:14:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 1152, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "7402:21:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "NegativeSpreadError", "nodeType": "MemberAccess", "referencedDeclaration": 9224, "src": "7402:41:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes32,bytes32) pure returns (bytes memory)"}}, "id": 1156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7402:118:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 1149, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "7380:13:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 1151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "7380:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 1157, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7380:141:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1158, "nodeType": "ExpressionStatement", "src": "7380:141:28"}]}}]}, "documentation": "@dev Validates context for matchOrders. Succeeds or throws.\n @param leftOrder First order to match.\n @param rightOrder Second order to match.\n @param leftOrderHash First matched order hash.\n @param rightOrderHash Second matched order hash.", "id": 1162, "implemented": true, "kind": "function", "modifiers": [], "name": "_assertValidMatch", "nodeType": "FunctionDefinition", "parameters": {"id": 1134, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1127, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 1162, "src": "6338:31:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1126, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "6338:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1129, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 1162, "src": "6379:32:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1128, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "6379:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1131, "name": "leftOrderHash", "nodeType": "VariableDeclaration", "scope": 1162, "src": "6421:21:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1130, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6421:7:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1133, "name": "rightOrderHash", "nodeType": "VariableDeclaration", "scope": 1162, "src": "6452:22:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1132, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6452:7:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "6328:152:28"}, "returnParameters": {"id": 1135, "nodeType": "ParameterList", "parameters": [], "src": "6515:0:28"}, "scope": 1818, "src": "6302:1236:28", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 1507, "nodeType": "Block", "src": "8781:6048:28", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1181, "name": "leftOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "8866:10:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8866:17:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 1183, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8887:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "8866:22:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 1197, "nodeType": "IfStatement", "src": "8862:216:28", "trueBody": {"id": 1196, "nodeType": "Block", "src": "8890:188:28", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1190, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "8987:21:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 1191, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BatchMatchOrdersErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8743, "src": "8987:48:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BatchMatchOrdersErrorCodes_$8743_$", "typeString": "type(enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes)"}}, "id": 1192, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ZERO_LEFT_ORDERS", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8987:65:28", "typeDescriptions": {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}], "expression": {"argumentTypes": null, "id": 1188, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "8926:21:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BatchMatchOrdersError", "nodeType": "MemberAccess", "referencedDeclaration": 8990, "src": "8926:43:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BatchMatchOrdersErrorCodes_$8743_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes) pure returns (bytes memory)"}}, "id": 1193, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8926:140:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 1185, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "8904:13:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 1187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "8904:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8904:163:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1195, "nodeType": "ExpressionStatement", "src": "8904:163:28"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1198, "name": "rightOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1168, "src": "9091:11:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9091:18:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 1200, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9113:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "9091:23:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 1214, "nodeType": "IfStatement", "src": "9087:218:28", "trueBody": {"id": 1213, "nodeType": "Block", "src": "9116:189:28", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1207, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "9213:21:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BatchMatchOrdersErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8743, "src": "9213:48:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BatchMatchOrdersErrorCodes_$8743_$", "typeString": "type(enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes)"}}, "id": 1209, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ZERO_RIGHT_ORDERS", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9213:66:28", "typeDescriptions": {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}], "expression": {"argumentTypes": null, "id": 1205, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "9152:21:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 1206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BatchMatchOrdersError", "nodeType": "MemberAccess", "referencedDeclaration": 8990, "src": "9152:43:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BatchMatchOrdersErrorCodes_$8743_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes) pure returns (bytes memory)"}}, "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9152:141:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 1202, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "9130:13:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "9130:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 1211, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9130:164:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1212, "nodeType": "ExpressionStatement", "src": "9130:164:28"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1215, "name": "leftOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "9384:10:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9384:17:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1217, "name": "leftSignatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1171, "src": "9405:14:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 1218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9405:21:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9384:42:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 1232, "nodeType": "IfStatement", "src": "9380:250:28", "trueBody": {"id": 1231, "nodeType": "Block", "src": "9428:202:28", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1225, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "9525:21:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 1226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BatchMatchOrdersErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8743, "src": "9525:48:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BatchMatchOrdersErrorCodes_$8743_$", "typeString": "type(enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes)"}}, "id": 1227, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_LENGTH_LEFT_SIGNATURES", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9525:79:28", "typeDescriptions": {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}], "expression": {"argumentTypes": null, "id": 1223, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "9464:21:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BatchMatchOrdersError", "nodeType": "MemberAccess", "referencedDeclaration": 8990, "src": "9464:43:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BatchMatchOrdersErrorCodes_$8743_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes) pure returns (bytes memory)"}}, "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9464:154:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 1220, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "9442:13:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 1222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "9442:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9442:177:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1230, "nodeType": "ExpressionStatement", "src": "9442:177:28"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1233, "name": "rightOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1168, "src": "9643:11:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9643:18:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1235, "name": "rightSignatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1174, "src": "9665:15:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9665:22:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9643:44:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 1250, "nodeType": "IfStatement", "src": "9639:253:28", "trueBody": {"id": 1249, "nodeType": "Block", "src": "9689:203:28", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1243, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "9786:21:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 1244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BatchMatchOrdersErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8743, "src": "9786:48:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BatchMatchOrdersErrorCodes_$8743_$", "typeString": "type(enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes)"}}, "id": 1245, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_LENGTH_RIGHT_SIGNATURES", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9786:80:28", "typeDescriptions": {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$8743", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}], "expression": {"argumentTypes": null, "id": 1241, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "9725:21:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 1242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BatchMatchOrdersError", "nodeType": "MemberAccess", "referencedDeclaration": 8990, "src": "9725:43:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BatchMatchOrdersErrorCodes_$8743_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes) pure returns (bytes memory)"}}, "id": 1246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9725:155:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 1238, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "9703:13:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "9703:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 1247, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9703:178:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1248, "nodeType": "ExpressionStatement", "src": "9703:178:28"}]}}, {"expression": {"argumentTypes": null, "id": 1260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1251, "name": "batchMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1179, "src": "9902:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "id": 1253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9964, "src": "9902:28:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1257, "name": "leftOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "9966:10:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9966:17:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1256, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "9933:32:28", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_$", "typeString": "function (uint256) pure returns (struct LibFillResults.FillResults memory[] memory)"}, "typeName": {"baseType": {"contractScope": null, "id": 1254, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "9937:26:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 1255, "length": null, "nodeType": "ArrayTypeName", "src": "9937:28:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}}, "id": 1259, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9933:51:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "src": "9902:82:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 1261, "nodeType": "ExpressionStatement", "src": "9902:82:28"}, {"expression": {"argumentTypes": null, "id": 1271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1262, "name": "batchMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1179, "src": "9994:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "id": 1264, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9967, "src": "9994:29:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1268, "name": "rightOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1168, "src": "10059:11:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10059:18:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1267, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "10026:32:28", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_$", "typeString": "function (uint256) pure returns (struct LibFillResults.FillResults memory[] memory)"}, "typeName": {"baseType": {"contractScope": null, "id": 1265, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "10030:26:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 1266, "length": null, "nodeType": "ArrayTypeName", "src": "10030:28:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}}, "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10026:52:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "src": "9994:84:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 1272, "nodeType": "ExpressionStatement", "src": "9994:84:28"}, {"assignments": [1274], "declarations": [{"constant": false, "id": 1274, "name": "leftIdx", "nodeType": "VariableDeclaration", "scope": 1507, "src": "10124:15:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1273, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10124:7:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 1276, "initialValue": {"argumentTypes": null, "hexValue": "30", "id": 1275, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10142:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "10124:19:28"}, {"assignments": [1278], "declarations": [{"constant": false, "id": 1278, "name": "rightIdx", "nodeType": "VariableDeclaration", "scope": 1507, "src": "10153:16:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1277, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10153:7:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 1280, "initialValue": {"argumentTypes": null, "hexValue": "30", "id": 1279, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10172:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "10153:20:28"}, {"assignments": [1284], "declarations": [{"constant": false, "id": 1284, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 1507, "src": "10281:31:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1283, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "10281:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}], "id": 1288, "initialValue": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 1285, "name": "leftOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "10315:10:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1287, "indexExpression": {"argumentTypes": null, "hexValue": "30", "id": 1286, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10326:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10315:13:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}, "nodeType": "VariableDeclarationStatement", "src": "10281:47:28"}, {"assignments": [1292], "declarations": [{"constant": false, "id": 1292, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 1507, "src": "10338:32:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1291, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "10338:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}], "id": 1296, "initialValue": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 1293, "name": "rightOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1168, "src": "10373:11:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1295, "indexExpression": {"argumentTypes": null, "hexValue": "30", "id": 1294, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10385:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10373:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}, "nodeType": "VariableDeclarationStatement", "src": "10338:49:28"}, {"assignments": [null, 1298], "declarations": [null, {"constant": false, "id": 1298, "name": "leftOrderTakerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 1507, "src": "10400:39:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1297, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10400:7:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 1302, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1300, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1284, "src": "10472:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}], "id": 1299, "name": "_getOrderHashAndFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 997, "src": "10443:28:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$returns$_t_bytes32_$_t_uint256_$", "typeString": "function (struct LibOrder.Order memory) view returns (bytes32,uint256)"}}, "id": 1301, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10443:39:28", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", "typeString": "tuple(bytes32,uint256)"}}, "nodeType": "VariableDeclarationStatement", "src": "10397:85:28"}, {"assignments": [null, 1304], "declarations": [null, {"constant": false, "id": 1304, "name": "rightOrderTakerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 1507, "src": "10495:40:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1303, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10495:7:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 1308, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1306, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1292, "src": "10568:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}], "id": 1305, "name": "_getOrderHashAndFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 997, "src": "10539:28:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$returns$_t_bytes32_$_t_uint256_$", "typeString": "function (struct LibOrder.Order memory) view returns (bytes32,uint256)"}}, "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10539:40:28", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", "typeString": "tuple(bytes32,uint256)"}}, "nodeType": "VariableDeclarationStatement", "src": "10492:87:28"}, {"assignments": [1312], "declarations": [{"constant": false, "id": 1312, "name": "leftFillResults", "nodeType": "VariableDeclaration", "scope": 1507, "src": "10589:49:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 1311, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "10589:26:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "id": 1313, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "10589:49:28"}, {"assignments": [1317], "declarations": [{"constant": false, "id": 1317, "name": "rightFillResults", "nodeType": "VariableDeclaration", "scope": 1507, "src": "10648:50:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 1316, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "10648:26:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "id": 1318, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "10648:50:28"}, {"body": {"id": 1503, "nodeType": "Block", "src": "10848:3878:28", "statements": [{"assignments": [1322], "declarations": [{"constant": false, "id": 1322, "name": "matchResults", "nodeType": "VariableDeclaration", "scope": 1503, "src": "10948:53:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 1321, "name": "LibFillResults.MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "10948:33:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "id": 1334, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1324, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1284, "src": "11034:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1325, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1292, "src": "11061:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 1326, "name": "leftSignatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1171, "src": "11089:14:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 1328, "indexExpression": {"argumentTypes": null, "id": 1327, "name": "leftIdx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1274, "src": "11104:7:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11089:23:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 1329, "name": "rightSignatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1174, "src": "11130:15:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 1331, "indexExpression": {"argumentTypes": null, "id": 1330, "name": "rightIdx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1278, "src": "11146:8:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11130:25:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1332, "name": "shouldMaximallyFillOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1176, "src": "11173:25:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1323, "name": "_matchOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1633, "src": "11004:12:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_Order_$10963_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_struct$_MatchedFillResults_$9992_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.Order memory,bytes memory,bytes memory,bool) returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 1333, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11004:208:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "VariableDeclarationStatement", "src": "10948:264:28"}, {"expression": {"argumentTypes": null, "id": 1342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 1335, "name": "leftOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "11314:31:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1338, "name": "matchResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1322, "src": "11388:12:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1339, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "11388:17:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1340, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "11388:40:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 1336, "name": "leftOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "11348:31:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "11348:39:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 1341, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11348:81:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11314:115:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1343, "nodeType": "ExpressionStatement", "src": "11314:115:28"}, {"expression": {"argumentTypes": null, "id": 1351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 1344, "name": "rightOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1304, "src": "11443:32:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1347, "name": "matchResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1322, "src": "11519:12:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1348, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "11519:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1349, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "11519:41:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 1345, "name": "rightOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1304, "src": "11478:32:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1346, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "11478:40:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 1350, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11478:83:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11443:118:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1352, "nodeType": "ExpressionStatement", "src": "11443:118:28"}, {"expression": {"argumentTypes": null, "id": 1360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 1353, "name": "leftFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "11677:15:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1356, "name": "leftFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "11742:15:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1357, "name": "matchResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1322, "src": "11775:12:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1358, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "11775:17:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}, {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}], "expression": {"argumentTypes": null, "id": 1354, "name": "LibFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10639, "src": "11695:14:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibFillResults_$10639_$", "typeString": "type(library LibFillResults)"}}, "id": 1355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "addFillResults", "nodeType": "MemberAccess", "referencedDeclaration": 10306, "src": "11695:29:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_FillResults_$9983_memory_ptr_$_t_struct$_FillResults_$9983_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibFillResults.FillResults memory,struct LibFillResults.FillResults memory) pure returns (struct LibFillResults.FillResults memory)"}}, "id": 1359, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11695:111:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "11677:129:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1361, "nodeType": "ExpressionStatement", "src": "11677:129:28"}, {"expression": {"argumentTypes": null, "id": 1369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 1362, "name": "rightFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1317, "src": "11820:16:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1365, "name": "rightFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1317, "src": "11886:16:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1366, "name": "matchResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1322, "src": "11920:12:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1367, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "11920:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}, {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}], "expression": {"argumentTypes": null, "id": 1363, "name": "LibFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10639, "src": "11839:14:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibFillResults_$10639_$", "typeString": "type(library LibFillResults)"}}, "id": 1364, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "addFillResults", "nodeType": "MemberAccess", "referencedDeclaration": 10306, "src": "11839:29:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_FillResults_$9983_memory_ptr_$_t_struct$_FillResults_$9983_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibFillResults.FillResults memory,struct LibFillResults.FillResults memory) pure returns (struct LibFillResults.FillResults memory)"}}, "id": 1368, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11839:113:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "11820:132:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1370, "nodeType": "ExpressionStatement", "src": "11820:132:28"}, {"expression": {"argumentTypes": null, "id": 1380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1371, "name": "batchMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1179, "src": "12084:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "id": 1373, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "profitInLeftMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 9969, "src": "12084:46:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1377, "name": "matchResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1322, "src": "12205:12:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1378, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "profitInLeftMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 9989, "src": "12205:35:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1374, "name": "batchMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1179, "src": "12133:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "id": 1375, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "profitInLeftMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 9969, "src": "12133:46:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "12133:54:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 1379, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12133:121:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12084:170:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1381, "nodeType": "ExpressionStatement", "src": "12084:170:28"}, {"expression": {"argumentTypes": null, "id": 1391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1382, "name": "batchMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1179, "src": "12268:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "id": 1384, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "profitInRightMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 9971, "src": "12268:47:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1388, "name": "matchResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1322, "src": "12391:12:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1389, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "profitInRightMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 9991, "src": "12391:36:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1385, "name": "batchMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1179, "src": "12318:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "id": 1386, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "profitInRightMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 9971, "src": "12318:47:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "12318:55:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 1390, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12318:123:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12268:173:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1392, "nodeType": "ExpressionStatement", "src": "12268:173:28"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 1393, "name": "leftOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "12635:31:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1394, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1284, "src": "12670:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1395, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "12670:26:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12635:61:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 1447, "nodeType": "IfStatement", "src": "12631:940:28", "trueBody": {"id": 1446, "nodeType": "Block", "src": "12698:873:28", "statements": [{"expression": {"argumentTypes": null, "id": 1404, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1397, "name": "batchMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1179, "src": "12796:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "id": 1401, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9964, "src": "12796:28:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 1402, "indexExpression": {"argumentTypes": null, "id": 1400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "12825:9:28", "subExpression": {"argumentTypes": null, "id": 1399, "name": "leftIdx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1274, "src": "12825:7:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "12796:39:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 1403, "name": "leftFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "12838:15:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "12796:57:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1405, "nodeType": "ExpressionStatement", "src": "12796:57:28"}, {"expression": {"argumentTypes": null, "id": 1415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 1406, "name": "leftFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "12933:15:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 1409, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12978:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"argumentTypes": null, "hexValue": "30", "id": 1410, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12981:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"argumentTypes": null, "hexValue": "30", "id": 1411, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12984:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"argumentTypes": null, "hexValue": "30", "id": 1412, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12987:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"argumentTypes": null, "hexValue": "30", "id": 1413, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12990:1:28", "subdenomination": null, "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"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"argumentTypes": null, "id": 1407, "name": "LibFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10639, "src": "12951:14:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibFillResults_$10639_$", "typeString": "type(library LibFillResults)"}}, "id": 1408, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "FillResults", "nodeType": "MemberAccess", "referencedDeclaration": 9983, "src": "12951:26:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_FillResults_$9983_storage_ptr_$", "typeString": "type(struct LibFillResults.FillResults storage pointer)"}}, "id": 1414, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12951:41:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "12933:59:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1416, "nodeType": "ExpressionStatement", "src": "12933:59:28"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 1417, "name": "leftIdx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1274, "src": "13163:7:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1418, "name": "leftOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "13174:10:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1419, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13174:17:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "13163:28:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1444, "nodeType": "Block", "src": "13386:171:28", "statements": [{"expression": {"argumentTypes": null, "id": 1435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 1431, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1284, "src": "13408:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 1432, "name": "leftOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "13420:10:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1434, "indexExpression": {"argumentTypes": null, "id": 1433, "name": "leftIdx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1274, "src": "13431:7:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13420:19:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}, "src": "13408:31:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1436, "nodeType": "ExpressionStatement", "src": "13408:31:28"}, {"expression": {"argumentTypes": null, "id": 1442, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [null, {"argumentTypes": null, "id": 1437, "name": "leftOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "13464:31:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 1438, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "13461:35:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$_t_uint256_$", "typeString": "tuple(,uint256)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1440, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1284, "src": "13528:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}], "id": 1439, "name": "_getOrderHashAndFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 997, "src": "13499:28:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$returns$_t_bytes32_$_t_uint256_$", "typeString": "function (struct LibOrder.Order memory) view returns (bytes32,uint256)"}}, "id": 1441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13499:39:28", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", "typeString": "tuple(bytes32,uint256)"}}, "src": "13461:77:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1443, "nodeType": "ExpressionStatement", "src": "13461:77:28"}]}, "id": 1445, "nodeType": "IfStatement", "src": "13159:398:28", "trueBody": {"id": 1430, "nodeType": "Block", "src": "13193:187:28", "statements": [{"expression": {"argumentTypes": null, "id": 1427, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1421, "name": "batchMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1179, "src": "13276:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "id": 1424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9967, "src": "13276:29:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 1425, "indexExpression": {"argumentTypes": null, "id": 1423, "name": "rightIdx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1278, "src": "13306:8:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "13276:39:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 1426, "name": "rightFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1317, "src": "13318:16:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "13276:58:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1428, "nodeType": "ExpressionStatement", "src": "13276:58:28"}, {"id": 1429, "nodeType": "Break", "src": "13356:5:28"}]}}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 1448, "name": "rightOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1304, "src": "13769:32:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1449, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1292, "src": "13805:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1450, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "13805:27:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "13769:63:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 1502, "nodeType": "IfStatement", "src": "13765:951:28", "trueBody": {"id": 1501, "nodeType": "Block", "src": "13834:882:28", "statements": [{"expression": {"argumentTypes": null, "id": 1459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1452, "name": "batchMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1179, "src": "13933:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "id": 1456, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9967, "src": "13933:29:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 1457, "indexExpression": {"argumentTypes": null, "id": 1455, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "13963:10:28", "subExpression": {"argumentTypes": null, "id": 1454, "name": "rightIdx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1278, "src": "13963:8:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "13933:41:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 1458, "name": "rightFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1317, "src": "13977:16:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "13933:60:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1460, "nodeType": "ExpressionStatement", "src": "13933:60:28"}, {"expression": {"argumentTypes": null, "id": 1470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 1461, "name": "rightFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1317, "src": "14073:16:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 1464, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14119:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"argumentTypes": null, "hexValue": "30", "id": 1465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14122:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"argumentTypes": null, "hexValue": "30", "id": 1466, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14125:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"argumentTypes": null, "hexValue": "30", "id": 1467, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14128:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"argumentTypes": null, "hexValue": "30", "id": 1468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14131:1:28", "subdenomination": null, "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"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"argumentTypes": null, "id": 1462, "name": "LibFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10639, "src": "14092:14:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibFillResults_$10639_$", "typeString": "type(library LibFillResults)"}}, "id": 1463, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "FillResults", "nodeType": "MemberAccess", "referencedDeclaration": 9983, "src": "14092:26:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_FillResults_$9983_storage_ptr_$", "typeString": "type(struct LibFillResults.FillResults storage pointer)"}}, "id": 1469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14092:41:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "14073:60:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1471, "nodeType": "ExpressionStatement", "src": "14073:60:28"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 1472, "name": "rightIdx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1278, "src": "14305:8:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1473, "name": "rightOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1168, "src": "14317:11:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1474, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14317:18:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "14305:30:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1499, "nodeType": "Block", "src": "14526:176:28", "statements": [{"expression": {"argumentTypes": null, "id": 1490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 1486, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1292, "src": "14548:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 1487, "name": "rightOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1168, "src": "14561:11:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 1489, "indexExpression": {"argumentTypes": null, "id": 1488, "name": "rightIdx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1278, "src": "14573:8:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14561:21:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}, "src": "14548:34:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1491, "nodeType": "ExpressionStatement", "src": "14548:34:28"}, {"expression": {"argumentTypes": null, "id": 1497, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [null, {"argumentTypes": null, "id": 1492, "name": "rightOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1304, "src": "14607:32:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 1493, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "14604:36:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$_t_uint256_$", "typeString": "tuple(,uint256)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1495, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1292, "src": "14672:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}], "id": 1494, "name": "_getOrderHashAndFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 997, "src": "14643:28:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$returns$_t_bytes32_$_t_uint256_$", "typeString": "function (struct LibOrder.Order memory) view returns (bytes32,uint256)"}}, "id": 1496, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14643:40:28", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", "typeString": "tuple(bytes32,uint256)"}}, "src": "14604:79:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1498, "nodeType": "ExpressionStatement", "src": "14604:79:28"}]}, "id": 1500, "nodeType": "IfStatement", "src": "14301:401:28", "trueBody": {"id": 1485, "nodeType": "Block", "src": "14337:183:28", "statements": [{"expression": {"argumentTypes": null, "id": 1482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1476, "name": "batchMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1179, "src": "14419:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "id": 1479, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9964, "src": "14419:28:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 1480, "indexExpression": {"argumentTypes": null, "id": 1478, "name": "leftIdx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1274, "src": "14448:7:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "14419:37:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 1481, "name": "leftFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "14459:15:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "14419:55:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1483, "nodeType": "ExpressionStatement", "src": "14419:55:28"}, {"id": 1484, "nodeType": "Break", "src": "14496:5:28"}]}}]}}]}, "condition": null, "id": 1504, "initializationExpression": null, "loopExpression": null, "nodeType": "ForStatement", "src": "10839:3887:28"}, {"expression": {"argumentTypes": null, "id": 1505, "name": "batchMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1179, "src": "14799:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults memory"}}, "functionReturnParameters": 1180, "id": 1506, "nodeType": "Return", "src": "14792:30:28"}]}, "documentation": "@dev Match complementary orders that have a profitable spread.\n Each order is filled at their respective price point, and\n the matcher receives a profit denominated in the left maker asset.\n This is the reentrant version of `batchMatchOrders` and `batchMatchOrdersWithMaximalFill`.\n @param leftOrders Set of orders with the same maker / taker asset.\n @param rightOrders Set of orders to match against `leftOrders`\n @param leftSignatures Proof that left orders were created by the left makers.\n @param rightSignatures Proof that right orders were created by the right makers.\n @param shouldMaximallyFillOrders A value that indicates whether or not the order matching\n should be done with maximal fill.\n @return batchMatchedFillResults Amounts filled and profit generated.", "id": 1508, "implemented": true, "kind": "function", "modifiers": [], "name": "_batchMatchOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 1177, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1165, "name": "leftOrders", "nodeType": "VariableDeclaration", "scope": 1508, "src": "8467:34:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 1163, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "8467:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 1164, "length": null, "nodeType": "ArrayTypeName", "src": "8467:16:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1168, "name": "rightOrders", "nodeType": "VariableDeclaration", "scope": 1508, "src": "8511:35:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 1166, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "8511:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 1167, "length": null, "nodeType": "ArrayTypeName", "src": "8511:16:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1171, "name": "leftSignatures", "nodeType": "VariableDeclaration", "scope": 1508, "src": "8556:29:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 1169, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8556:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 1170, "length": null, "nodeType": "ArrayTypeName", "src": "8556:7:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1174, "name": "rightSignatures", "nodeType": "VariableDeclaration", "scope": 1508, "src": "8595:30:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 1172, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8595:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 1173, "length": null, "nodeType": "ArrayTypeName", "src": "8595:7:28", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1176, "name": "shouldMaximallyFillOrders", "nodeType": "VariableDeclaration", "scope": 1508, "src": "8635:30:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1175, "name": "bool", "nodeType": "ElementaryTypeName", "src": "8635:4:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "8457:214:28"}, "returnParameters": {"id": 1180, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1179, "name": "batchMatchedFillResults", "nodeType": "VariableDeclaration", "scope": 1508, "src": "8706:69:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults"}, "typeName": {"contractScope": null, "id": 1178, "name": "LibFillResults.BatchMatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9972, "src": "8706:38:28", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_storage_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "8705:71:28"}, "scope": 1818, "src": "8431:6398:28", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 1632, "nodeType": "Block", "src": "16153:2416:28", "statements": [{"expression": {"argumentTypes": null, "id": 1528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1523, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "16496:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1525, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10956, "src": "16496:25:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1526, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1510, "src": "16524:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10958, "src": "16524:24:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "src": "16496:52:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "id": 1529, "nodeType": "ExpressionStatement", "src": "16496:52:28"}, {"expression": {"argumentTypes": null, "id": 1535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1530, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "16558:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1532, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10958, "src": "16558:25:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1533, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1510, "src": "16586:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1534, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10956, "src": "16586:24:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "src": "16558:52:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "id": 1536, "nodeType": "ExpressionStatement", "src": "16558:52:28"}, {"assignments": [1540], "declarations": [{"constant": false, "id": 1540, "name": "leftOrderInfo", "nodeType": "VariableDeclaration", "scope": 1632, "src": "16660:39:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo"}, "typeName": {"contractScope": null, "id": 1539, "name": "LibOrder.OrderInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10970, "src": "16660:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_storage_ptr", "typeString": "struct LibOrder.OrderInfo"}}, "value": null, "visibility": "internal"}], "id": 1544, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1542, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1510, "src": "16715:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}], "id": 1541, "name": "getOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [513], "referencedDeclaration": 513, "src": "16702:12:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$returns$_t_struct$_OrderInfo_$10970_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory) view returns (struct LibOrder.OrderInfo memory)"}}, "id": 1543, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16702:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "nodeType": "VariableDeclarationStatement", "src": "16660:65:28"}, {"assignments": [1548], "declarations": [{"constant": false, "id": 1548, "name": "rightOrderInfo", "nodeType": "VariableDeclaration", "scope": 1632, "src": "16735:40:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo"}, "typeName": {"contractScope": null, "id": 1547, "name": "LibOrder.OrderInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10970, "src": "16735:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_storage_ptr", "typeString": "struct LibOrder.OrderInfo"}}, "value": null, "visibility": "internal"}], "id": 1552, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1550, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "16791:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}], "id": 1549, "name": "getOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [513], "referencedDeclaration": 513, "src": "16778:12:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$returns$_t_struct$_OrderInfo_$10970_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory) view returns (struct LibOrder.OrderInfo memory)"}}, "id": 1551, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16778:24:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "nodeType": "VariableDeclarationStatement", "src": "16735:67:28"}, {"assignments": [1554], "declarations": [{"constant": false, "id": 1554, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 1632, "src": "16844:20:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1553, "name": "address", "nodeType": "ElementaryTypeName", "src": "16844:7:28", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 1557, "initialValue": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 1555, "name": "_getCurrentContextAddress", "nodeType": "Identifier", "overloadedDeclarations": [3411], "referencedDeclaration": 3411, "src": "16867:25:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16867:27:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "16844:50:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1559, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1510, "src": "16991:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1560, "name": "leftOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1540, "src": "17014:13:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, {"argumentTypes": null, "id": 1561, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "17041:12:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1562, "name": "leftSignature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1514, "src": "17067:13:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1558, "name": "_assertFillableOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "16957:20:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_OrderInfo_$10970_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.OrderInfo memory,address,bytes memory) view"}}, "id": 1563, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16957:133:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1564, "nodeType": "ExpressionStatement", "src": "16957:133:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1566, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "17134:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1567, "name": "rightOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1548, "src": "17158:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, {"argumentTypes": null, "id": 1568, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "17186:12:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1569, "name": "rightSignature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1516, "src": "17212:14:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1565, "name": "_assertFillableOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "17100:20:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_OrderInfo_$10970_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.OrderInfo memory,address,bytes memory) view"}}, "id": 1570, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17100:136:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1571, "nodeType": "ExpressionStatement", "src": "17100:136:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1573, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1510, "src": "17277:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1574, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "17300:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1575, "name": "leftOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1540, "src": "17324:13:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 1576, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "17324:23:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1577, "name": "rightOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1548, "src": "17361:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 1578, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "17361:24:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1572, "name": "_assertValidMatch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1162, "src": "17246:17:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_Order_$10963_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.Order memory,bytes32,bytes32) pure"}}, "id": 1579, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17246:149:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1580, "nodeType": "ExpressionStatement", "src": "17246:149:28"}, {"expression": {"argumentTypes": null, "id": 1595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 1581, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "17451:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1584, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1510, "src": "17528:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1585, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "17551:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1586, "name": "leftOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1540, "src": "17575:13:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 1587, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderTakerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10969, "src": "17575:41:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1588, "name": "rightOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1548, "src": "17630:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 1589, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderTakerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10969, "src": "17630:42:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 1590, "name": "protocolFeeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1831, "src": "17686:21:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1591, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12103, "src": "17721:2:28", "typeDescriptions": {"typeIdentifier": "t_magic_transaction", "typeString": "tx"}}, "id": 1592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "gasprice", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "17721:11:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 1593, "name": "shouldMaximallyFillOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1518, "src": "17746:25:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "expression": {"argumentTypes": null, "id": 1582, "name": "LibFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10639, "src": "17472:14:28", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibFillResults_$10639_$", "typeString": "type(library LibFillResults)"}}, "id": 1583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "calculateMatchedFillResults", "nodeType": "MemberAccess", "referencedDeclaration": 10239, "src": "17472:42:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_struct$_MatchedFillResults_$9992_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.Order memory,uint256,uint256,uint256,uint256,bool) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17472:309:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "17451:330:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1596, "nodeType": "ExpressionStatement", "src": "17451:330:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1598, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1510, "src": "17857:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1599, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "17880:12:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1600, "name": "leftOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1540, "src": "17906:13:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 1601, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "17906:23:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1602, "name": "leftOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1540, "src": "17943:13:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 1603, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderTakerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10969, "src": "17943:41:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1604, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "17998:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1605, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "17998:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}], "id": 1597, "name": "_updateFilledState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 683, "src": "17825:18:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_address_$_t_bytes32_$_t_uint256_$_t_struct$_FillResults_$9983_memory_ptr_$returns$__$", "typeString": "function (struct LibOrder.Order memory,address,bytes32,uint256,struct LibFillResults.FillResults memory)"}}, "id": 1606, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17825:206:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1607, "nodeType": "ExpressionStatement", "src": "17825:206:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1609, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "18073:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1610, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "18097:12:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1611, "name": "rightOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1548, "src": "18123:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 1612, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "18123:24:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1613, "name": "rightOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1548, "src": "18161:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 1614, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderTakerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10969, "src": "18161:42:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1615, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "18217:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1616, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "18217:24:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}], "id": 1608, "name": "_updateFilledState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 683, "src": "18041:18:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_address_$_t_bytes32_$_t_uint256_$_t_struct$_FillResults_$9983_memory_ptr_$returns$__$", "typeString": "function (struct LibOrder.Order memory,address,bytes32,uint256,struct LibFillResults.FillResults memory)"}}, "id": 1617, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18041:210:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1618, "nodeType": "ExpressionStatement", "src": "18041:210:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1620, "name": "leftOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1540, "src": "18350:13:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 1621, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "18350:23:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1622, "name": "rightOrderInfo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1548, "src": "18387:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo memory"}}, "id": 1623, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "orderHash", "nodeType": "MemberAccess", "referencedDeclaration": 10967, "src": "18387:24:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 1624, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1510, "src": "18425:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1625, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "18448:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 1626, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "18472:12:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1627, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "18498:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}], "id": 1619, "name": "_settleMatchedOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1817, "src": "18316:20:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_struct$_Order_$10963_memory_ptr_$_t_struct$_Order_$10963_memory_ptr_$_t_address_$_t_struct$_MatchedFillResults_$9992_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,struct LibOrder.Order memory,struct LibOrder.Order memory,address,struct LibFillResults.MatchedFillResults memory)"}}, "id": 1628, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18316:210:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1629, "nodeType": "ExpressionStatement", "src": "18316:210:28"}, {"expression": {"argumentTypes": null, "id": 1630, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "18544:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 1522, "id": 1631, "nodeType": "Return", "src": "18537:25:28"}]}, "documentation": "@dev Match two complementary orders that have a profitable spread.\n Each order is filled at their respective price point. However, the calculations are\n carried out as though the orders are both being filled at the right order's price point.\n The profit made by the left order goes to the taker (who matched the two orders). This\n function is needed to allow for reentrant order matching (used by `batchMatchOrders` and\n `batchMatchOrdersWithMaximalFill`).\n @param leftOrder First order to match.\n @param rightOrder Second order to match.\n @param leftSignature Proof that order was created by the left maker.\n @param rightSignature Proof that order was created by the right maker.\n @param shouldMaximallyFillOrders Indicates whether or not the maximal fill matching strategy should be used\n @return matchedFillResults Amounts filled and fees paid by maker and taker of matched orders.", "id": 1633, "implemented": true, "kind": "function", "modifiers": [], "name": "_matchOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 1519, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1510, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 1633, "src": "15861:31:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1509, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "15861:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1512, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 1633, "src": "15902:32:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1511, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "15902:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1514, "name": "leftSignature", "nodeType": "VariableDeclaration", "scope": 1633, "src": "15944:26:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1513, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "15944:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1516, "name": "rightSignature", "nodeType": "VariableDeclaration", "scope": 1633, "src": "15980:27:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1515, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "15980:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1518, "name": "shouldMaximallyFillOrders", "nodeType": "VariableDeclaration", "scope": 1633, "src": "16017:30:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1517, "name": "bool", "nodeType": "ElementaryTypeName", "src": "16017:4:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "15851:202:28"}, "returnParameters": {"id": 1522, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1521, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 1633, "src": "16088:59:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 1520, "name": "LibFillResults.MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "16088:33:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "16087:61:28"}, "scope": 1818, "src": "15830:2739:28", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 1816, "nodeType": "Block", "src": "19429:3652:28", "statements": [{"assignments": [1649], "declarations": [{"constant": false, "id": 1649, "name": "leftMakerAddress", "nodeType": "VariableDeclaration", "scope": 1816, "src": "19439:24:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1648, "name": "address", "nodeType": "ElementaryTypeName", "src": "19439:7:28", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 1652, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1650, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1639, "src": "19466:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1651, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "19466:22:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "19439:49:28"}, {"assignments": [1654], "declarations": [{"constant": false, "id": 1654, "name": "rightMakerAddress", "nodeType": "VariableDeclaration", "scope": 1816, "src": "19498:25:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1653, "name": "address", "nodeType": "ElementaryTypeName", "src": "19498:7:28", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 1657, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1655, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1641, "src": "19526:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1656, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "19526:23:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "19498:51:28"}, {"assignments": [1659], "declarations": [{"constant": false, "id": 1659, "name": "leftFeeRecipientAddress", "nodeType": "VariableDeclaration", "scope": 1816, "src": "19559:31:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1658, "name": "address", "nodeType": "ElementaryTypeName", "src": "19559:7:28", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 1662, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1660, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1639, "src": "19593:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "feeRecipientAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10940, "src": "19593:29:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "19559:63:28"}, {"assignments": [1664], "declarations": [{"constant": false, "id": 1664, "name": "rightFeeRecipientAddress", "nodeType": "VariableDeclaration", "scope": 1816, "src": "19632:32:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1663, "name": "address", "nodeType": "ElementaryTypeName", "src": "19632:7:28", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 1667, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1665, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1641, "src": "19667:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1666, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "feeRecipientAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10940, "src": "19667:30:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "19632:65:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1669, "name": "rightOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1637, "src": "19786:14:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1670, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1641, "src": "19814:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10956, "src": "19814:25:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1672, "name": "rightMakerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1654, "src": "19853:17:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1673, "name": "leftMakerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1649, "src": "19884:16:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1674, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "19914:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1675, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "19914:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1676, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "19914:46:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1668, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "19751:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 1677, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "19751:219:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1678, "nodeType": "ExpressionStatement", "src": "19751:219:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1680, "name": "leftOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1635, "src": "20059:13:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1681, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1639, "src": "20086:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1682, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10956, "src": "20086:24:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1683, "name": "leftMakerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1649, "src": "20124:16:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1684, "name": "rightMakerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1654, "src": "20154:17:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1685, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "20185:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1686, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "20185:24:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1687, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "20185:47:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1679, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "20024:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 1688, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "20024:218:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1689, "nodeType": "ExpressionStatement", "src": "20024:218:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1691, "name": "rightOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1637, "src": "20338:14:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1692, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1641, "src": "20366:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1693, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10960, "src": "20366:28:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1694, "name": "rightMakerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1654, "src": "20408:17:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1695, "name": "rightFeeRecipientAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1664, "src": "20439:24:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1696, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "20477:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1697, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "20477:24:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1698, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9978, "src": "20477:37:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1690, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "20303:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 1699, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "20303:221:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1700, "nodeType": "ExpressionStatement", "src": "20303:221:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1702, "name": "leftOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1635, "src": "20618:13:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1703, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1639, "src": "20645:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1704, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10960, "src": "20645:27:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1705, "name": "leftMakerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1649, "src": "20686:16:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1706, "name": "leftFeeRecipientAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1659, "src": "20716:23:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1707, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "20753:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1708, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "20753:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1709, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9978, "src": "20753:36:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1701, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "20583:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 1710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "20583:216:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1711, "nodeType": "ExpressionStatement", "src": "20583:216:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1713, "name": "leftOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1635, "src": "20878:13:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1714, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1639, "src": "20905:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1715, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10956, "src": "20905:24:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1716, "name": "leftMakerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1649, "src": "20943:16:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1717, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1643, "src": "20973:12:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1718, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "20999:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1719, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "profitInLeftMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 9989, "src": "20999:41:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1712, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "20843:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 1720, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "20843:207:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1721, "nodeType": "ExpressionStatement", "src": "20843:207:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1723, "name": "rightOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1637, "src": "21095:14:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1724, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1641, "src": "21123:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1725, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10956, "src": "21123:25:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1726, "name": "rightMakerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1654, "src": "21162:17:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1727, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1643, "src": "21193:12:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1728, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "21219:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1729, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "profitInRightMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 9991, "src": "21219:42:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1722, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "21060:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 1730, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "21060:211:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1731, "nodeType": "ExpressionStatement", "src": "21060:211:28"}, {"assignments": [1733], "declarations": [{"constant": false, "id": 1733, "name": "didPayProtocolFees", "nodeType": "VariableDeclaration", "scope": 1816, "src": "21326:23:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1732, "name": "bool", "nodeType": "ElementaryTypeName", "src": "21326:4:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "id": 1744, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1735, "name": "leftOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1635, "src": "21385:13:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 1736, "name": "rightOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1637, "src": "21412:14:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1737, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "21440:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1738, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "21440:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1739, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "21440:39:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 1740, "name": "leftMakerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1649, "src": "21493:16:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1741, "name": "rightMakerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1654, "src": "21523:17:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1742, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1643, "src": "21554:12:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1734, "name": "_payTwoProtocolFees", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1994, "src": "21352:19:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_address_$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (bytes32,bytes32,uint256,address,address,address) returns (bool)"}}, "id": 1743, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "21352:224:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "21326:250:28"}, {"condition": {"argumentTypes": null, "id": 1746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "21677:19:28", "subExpression": {"argumentTypes": null, "id": 1745, "name": "didPayProtocolFees", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "21678:18:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 1764, "nodeType": "IfStatement", "src": "21673:151:28", "trueBody": {"id": 1763, "nodeType": "Block", "src": "21698:126:28", "statements": [{"expression": {"argumentTypes": null, "id": 1753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1747, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "21712:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1750, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "21712:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1751, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "21712:39:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "30", "id": 1752, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "21754:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "21712:43:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1754, "nodeType": "ExpressionStatement", "src": "21712:43:28"}, {"expression": {"argumentTypes": null, "id": 1761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1755, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "21769:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1758, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "21769:24:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1759, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9982, "src": "21769:40:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "30", "id": 1760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "21812:1:28", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "21769:44:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1762, "nodeType": "ExpressionStatement", "src": "21769:44:28"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 1765, "name": "leftFeeRecipientAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1659, "src": "21881:23:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "id": 1766, "name": "rightFeeRecipientAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1664, "src": "21908:24:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "21881:51:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1771, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1641, "src": "21983:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1772, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10962, "src": "21983:28:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1768, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1639, "src": "21948:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1769, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10962, "src": "21948:27:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "id": 1770, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "equals", "nodeType": "MemberAccess", "referencedDeclaration": 9593, "src": "21948:34:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,bytes memory) pure returns (bool)"}}, "id": 1773, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "21948:64:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "21881:131:28", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1814, "nodeType": "Block", "src": "22453:622:28", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1793, "name": "rightOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1637, "src": "22560:14:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1794, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1641, "src": "22592:10:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1795, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10962, "src": "22592:28:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1796, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1643, "src": "22638:12:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1797, "name": "rightFeeRecipientAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1664, "src": "22668:24:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1798, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "22710:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1799, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "22710:24:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1800, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "22710:37:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1792, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "22521:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 1801, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22521:240:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1802, "nodeType": "ExpressionStatement", "src": "22521:240:28"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1804, "name": "leftOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1635, "src": "22867:13:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1805, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1639, "src": "22898:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1806, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10962, "src": "22898:27:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1807, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1643, "src": "22943:12:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1808, "name": "leftFeeRecipientAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1659, "src": "22973:23:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1809, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "23014:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1810, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "23014:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1811, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "23014:36:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1803, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "22828:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 1812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22828:236:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1813, "nodeType": "ExpressionStatement", "src": "22828:236:28"}]}, "id": 1815, "nodeType": "IfStatement", "src": "21864:1211:28", "trueBody": {"id": 1791, "nodeType": "Block", "src": "22023:424:28", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1776, "name": "leftOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1635, "src": "22192:13:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1777, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1639, "src": "22223:9:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 1778, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 10962, "src": "22223:27:28", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 1779, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1643, "src": "22268:12:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1780, "name": "leftFeeRecipientAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1659, "src": "22298:23:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1785, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "22384:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1786, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 9987, "src": "22384:24:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1787, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "22384:37:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 1781, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "22339:18:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 1782, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 9985, "src": "22339:23:28", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 1783, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9980, "src": "22339:36:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "22339:44:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 1788, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22339:83:28", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1775, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "22153:21:28", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 1789, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22153:283:28", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1790, "nodeType": "ExpressionStatement", "src": "22153:283:28"}]}}]}, "documentation": "@dev Settles matched order by transferring appropriate funds between order makers, taker, and fee recipient.\n @param leftOrderHash First matched order hash.\n @param rightOrderHash Second matched order hash.\n @param leftOrder First matched order.\n @param rightOrder Second matched order.\n @param takerAddress Address that matched the orders. The taker receives the spread between orders as profit.\n @param matchedFillResults Struct holding amounts to transfer between makers, taker, and fee recipients.", "id": 1817, "implemented": true, "kind": "function", "modifiers": [], "name": "_settleMatchedOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 1646, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1635, "name": "leftOrderHash", "nodeType": "VariableDeclaration", "scope": 1817, "src": "19166:21:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1634, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "19166:7:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1637, "name": "rightOrderHash", "nodeType": "VariableDeclaration", "scope": 1817, "src": "19197:22:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1636, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "19197:7:28", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1639, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 1817, "src": "19229:31:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1638, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "19229:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1641, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 1817, "src": "19270:32:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 1640, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "19270:14:28", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1643, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 1817, "src": "19312:20:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1642, "name": "address", "nodeType": "ElementaryTypeName", "src": "19312:7:28", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1645, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 1817, "src": "19342:59:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 1644, "name": "LibFillResults.MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "19342:33:28", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "19156:251:28"}, "returnParameters": {"id": 1647, "nodeType": "ParameterList", "parameters": [], "src": "19429:0:28"}, "scope": 1818, "src": "19127:3954:28", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}], "scope": 1819, "src": "1047:22036:28"}], "src": "579:22505:28"}, "id": 28}, "contracts/exchange/MixinProtocolFees.sol": {"ast": {"absolutePath": "contracts/exchange/MixinProtocolFees.sol", "exportedSymbols": {"MixinProtocolFees": [2069]}, "id": 2070, "nodeType": "SourceUnit", "nodes": [{"id": 1820, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:29"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/Ownable.sol", "file": "@0x/contracts-utils/contracts/src/Ownable.sol", "id": 1821, "nodeType": "ImportDirective", "scope": 2070, "sourceUnit": 9954, "src": "605:55:29", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "@0x/contracts-utils/contracts/src/LibRichErrors.sol", "id": 1822, "nodeType": "ImportDirective", "scope": 2070, "sourceUnit": 9873, "src": "661:61:29", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "id": 1823, "nodeType": "ImportDirective", "scope": 2070, "sourceUnit": 9343, "src": "723:77:29", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-staking/contracts/src/interfaces/IStaking.sol", "file": "@0x/contracts-staking/contracts/src/interfaces/IStaking.sol", "id": 1824, "nodeType": "ImportDirective", "scope": 2070, "sourceUnit": 11511, "src": "801:69:29", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IProtocolFees.sol", "file": "./interfaces/IProtocolFees.sol", "id": 1825, "nodeType": "ImportDirective", "scope": 2070, "sourceUnit": 7758, "src": "871:40:29", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 1826, "name": "IProtocolFees", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7757, "src": "948:13:29", "typeDescriptions": {"typeIdentifier": "t_contract$_IProtocolFees_$7757", "typeString": "contract IProtocolFees"}}, "id": 1827, "nodeType": "InheritanceSpecifier", "src": "948:13:29"}, {"arguments": null, "baseName": {"contractScope": null, "id": 1828, "name": "Ownable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9953, "src": "967:7:29", "typeDescriptions": {"typeIdentifier": "t_contract$_Ownable_$9953", "typeString": "contract Ownable"}}, "id": 1829, "nodeType": "InheritanceSpecifier", "src": "967:7:29"}], "contractDependencies": [7757, 9953, 11737], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 2069, "linearizedBaseContracts": [2069, 9953, 11737, 7757], "name": "MixinProtocolFees", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 1831, "name": "protocolFeeMultiplier", "nodeType": "VariableDeclaration", "scope": 2069, "src": "1091:36:29", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1830, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1091:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "public"}, {"constant": false, "id": 1833, "name": "protocolFeeCollector", "nodeType": "VariableDeclaration", "scope": 2069, "src": "1299:35:29", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1832, "name": "address", "nodeType": "ElementaryTypeName", "src": "1299:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "public"}, {"body": {"id": 1849, "nodeType": "Block", "src": "1602:158:29", "statements": [{"eventCall": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1841, "name": "protocolFeeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1831, "src": "1639:21:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 1842, "name": "updatedProtocolFeeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1835, "src": "1662:28:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1840, "name": "ProtocolFeeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7730, "src": "1617:21:29", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 1843, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1617:74:29", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1844, "nodeType": "EmitStatement", "src": "1612:79:29"}, {"expression": {"argumentTypes": null, "id": 1847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 1845, "name": "protocolFeeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1831, "src": "1701:21:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 1846, "name": "updatedProtocolFeeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1835, "src": "1725:28:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1701:52:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1848, "nodeType": "ExpressionStatement", "src": "1701:52:29"}]}, "documentation": "@dev Allows the owner to update the protocol fee multiplier.\n @param updatedProtocolFeeMultiplier The updated protocol fee multiplier.", "id": 1850, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 1838, "modifierName": {"argumentTypes": null, "id": 1837, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9897, "src": "1588:9:29", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "1588:9:29"}], "name": "setProtocolFeeMultiplier", "nodeType": "FunctionDefinition", "parameters": {"id": 1836, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1835, "name": "updatedProtocolFeeMultiplier", "nodeType": "VariableDeclaration", "scope": 1850, "src": "1525:36:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1834, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1525:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1524:38:29"}, "returnParameters": {"id": 1839, "nodeType": "ParameterList", "parameters": [], "src": "1602:0:29"}, "scope": 2069, "src": "1491:269:29", "stateMutability": "nonpayable", "superFunction": 7741, "visibility": "external"}, {"body": {"id": 1861, "nodeType": "Block", "src": "2050:77:29", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1858, "name": "updatedProtocolFeeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1852, "src": "2092:27:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1857, "name": "_setProtocolFeeCollectorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1889, "src": "2060:31:29", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 1859, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2060:60:29", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1860, "nodeType": "ExpressionStatement", "src": "2060:60:29"}]}, "documentation": "@dev Allows the owner to update the protocolFeeCollector address.\n @param updatedProtocolFeeCollector The updated protocolFeeCollector contract address.", "id": 1862, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 1855, "modifierName": {"argumentTypes": null, "id": 1854, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9897, "src": "2036:9:29", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "2036:9:29"}], "name": "setProtocolFeeCollectorAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 1853, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1852, "name": "updatedProtocolFeeCollector", "nodeType": "VariableDeclaration", "scope": 1862, "src": "1974:35:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1851, "name": "address", "nodeType": "ElementaryTypeName", "src": "1974:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1973:37:29"}, "returnParameters": {"id": 1856, "nodeType": "ParameterList", "parameters": [], "src": "2050:0:29"}, "scope": 2069, "src": "1934:193:29", "stateMutability": "nonpayable", "superFunction": 7746, "visibility": "external"}, {"body": {"id": 1873, "nodeType": "Block", "src": "2313:60:29", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 1869, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2363:1:29", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1868, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2355:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 1870, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2355:10:29", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}], "id": 1867, "name": "_setProtocolFeeCollectorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1889, "src": "2323:31:29", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 1871, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2323:43:29", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1872, "nodeType": "ExpressionStatement", "src": "2323:43:29"}]}, "documentation": "@dev Sets the protocolFeeCollector contract address to 0.\n Only callable by owner.", "id": 1874, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 1865, "modifierName": {"argumentTypes": null, "id": 1864, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9897, "src": "2299:9:29", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "2299:9:29"}], "name": "detachProtocolFeeCollector", "nodeType": "FunctionDefinition", "parameters": {"id": 1863, "nodeType": "ParameterList", "parameters": [], "src": "2271:2:29"}, "returnParameters": {"id": 1866, "nodeType": "ParameterList", "parameters": [], "src": "2313:0:29"}, "scope": 2069, "src": "2236:137:29", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": {"id": 1888, "nodeType": "Block", "src": "2643:160:29", "statements": [{"eventCall": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1880, "name": "protocolFeeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1833, "src": "2686:20:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1881, "name": "updatedProtocolFeeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1876, "src": "2708:27:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1879, "name": "ProtocolFeeCollectorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7736, "src": "2658:27:29", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 1882, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2658:78:29", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1883, "nodeType": "EmitStatement", "src": "2653:83:29"}, {"expression": {"argumentTypes": null, "id": 1886, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 1884, "name": "protocolFeeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1833, "src": "2746:20:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 1885, "name": "updatedProtocolFeeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1876, "src": "2769:27:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2746:50:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1887, "nodeType": "ExpressionStatement", "src": "2746:50:29"}]}, "documentation": "@dev Sets the protocolFeeCollector address and emits an event.\n @param updatedProtocolFeeCollector The updated protocolFeeCollector contract address.", "id": 1889, "implemented": true, "kind": "function", "modifiers": [], "name": "_setProtocolFeeCollectorAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 1877, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1876, "name": "updatedProtocolFeeCollector", "nodeType": "VariableDeclaration", "scope": 1889, "src": "2585:35:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1875, "name": "address", "nodeType": "ElementaryTypeName", "src": "2585:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "2584:37:29"}, "returnParameters": {"id": 1878, "nodeType": "ParameterList", "parameters": [], "src": "2643:0:29"}, "scope": 2069, "src": "2544:259:29", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 1930, "nodeType": "Block", "src": "3337:422:29", "statements": [{"assignments": [1903], "declarations": [{"constant": false, "id": 1903, "name": "feeCollector", "nodeType": "VariableDeclaration", "scope": 1930, "src": "3347:20:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1902, "name": "address", "nodeType": "ElementaryTypeName", "src": "3347:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 1905, "initialValue": {"argumentTypes": null, "id": 1904, "name": "protocolFeeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1833, "src": "3370:20:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3347:43:29"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 1906, "name": "feeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1903, "src": "3404:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 1908, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3428:1:29", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1907, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3420:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 1909, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3420:10:29", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "3404:26:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1928, "nodeType": "Block", "src": "3716:37:29", "statements": [{"expression": {"argumentTypes": null, "hexValue": "66616c7365", "id": 1926, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3737:5:29", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 1901, "id": 1927, "nodeType": "Return", "src": "3730:12:29"}]}, "id": 1929, "nodeType": "IfStatement", "src": "3400:353:29", "trueBody": {"id": 1925, "nodeType": "Block", "src": "3432:278:29", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1912, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1891, "src": "3493:9:29", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 1913, "name": "feeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1903, "src": "3520:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1915, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12167, "src": "3558:4:29", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinProtocolFees_$2069", "typeString": "contract MixinProtocolFees"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_MixinProtocolFees_$2069", "typeString": "contract MixinProtocolFees"}], "id": 1914, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3550:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 1916, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3550:13:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1917, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3550:21:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 1918, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1893, "src": "3589:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 1919, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1895, "src": "3618:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1920, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1897, "src": "3648:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1911, "name": "_payProtocolFeeToFeeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2068, "src": "3446:29:29", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (bytes32,address,uint256,uint256,address,address) returns (uint256)"}}, "id": 1921, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3446:228:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1922, "nodeType": "ExpressionStatement", "src": "3446:228:29"}, {"expression": {"argumentTypes": null, "hexValue": "74727565", "id": 1923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3695:4:29", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 1901, "id": 1924, "nodeType": "Return", "src": "3688:11:29"}]}}]}, "documentation": "@dev Pays a protocol fee for a single fill.\n @param orderHash Hash of the order being filled.\n @param protocolFee Value of the fee being paid (equal to protocolFeeMultiplier * tx.gasPrice).\n @param makerAddress Address of maker of order being filled.\n @param takerAddress Address filling order.", "id": 1931, "implemented": true, "kind": "function", "modifiers": [], "name": "_paySingleProtocolFee", "nodeType": "FunctionDefinition", "parameters": {"id": 1898, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1891, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 1931, "src": "3180:17:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1890, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3180:7:29", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1893, "name": "protocolFee", "nodeType": "VariableDeclaration", "scope": 1931, "src": "3207:19:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1892, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3207:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1895, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 1931, "src": "3236:20:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1894, "name": "address", "nodeType": "ElementaryTypeName", "src": "3236:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1897, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 1931, "src": "3266:20:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1896, "name": "address", "nodeType": "ElementaryTypeName", "src": "3266:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "3170:122:29"}, "returnParameters": {"id": 1901, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1900, "name": "", "nodeType": "VariableDeclaration", "scope": 1931, "src": "3327:4:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1899, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3327:4:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "3326:6:29"}, "scope": 2069, "src": "3140:619:29", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 1993, "nodeType": "Block", "src": "4555:1003:29", "statements": [{"assignments": [1949], "declarations": [{"constant": false, "id": 1949, "name": "feeCollector", "nodeType": "VariableDeclaration", "scope": 1993, "src": "4565:20:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1948, "name": "address", "nodeType": "ElementaryTypeName", "src": "4565:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 1951, "initialValue": {"argumentTypes": null, "id": 1950, "name": "protocolFeeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1833, "src": "4588:20:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "4565:43:29"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1956, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 1952, "name": "feeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1949, "src": "4622:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 1954, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4646:1:29", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1953, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4638:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 1955, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4638:10:29", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "4622:26:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1991, "nodeType": "Block", "src": "5515:37:29", "statements": [{"expression": {"argumentTypes": null, "hexValue": "66616c7365", "id": 1989, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5536:5:29", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 1947, "id": 1990, "nodeType": "Return", "src": "5529:12:29"}]}, "id": 1992, "nodeType": "IfStatement", "src": "4618:934:29", "trueBody": {"id": 1988, "nodeType": "Block", "src": "4650:859:29", "statements": [{"assignments": [1958], "declarations": [{"constant": false, "id": 1958, "name": "exchangeBalance", "nodeType": "VariableDeclaration", "scope": 1988, "src": "4793:23:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1957, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4793:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 1963, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1960, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12167, "src": "4827:4:29", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinProtocolFees_$2069", "typeString": "contract MixinProtocolFees"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_MixinProtocolFees_$2069", "typeString": "contract MixinProtocolFees"}], "id": 1959, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4819:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 1961, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4819:13:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4819:21:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "4793:47:29"}, {"assignments": [1965], "declarations": [{"constant": false, "id": 1965, "name": "valuePaid", "nodeType": "VariableDeclaration", "scope": 1988, "src": "4916:17:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1964, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4916:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 1974, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1967, "name": "orderHash1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1933, "src": "4983:10:29", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 1968, "name": "feeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1949, "src": "5011:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1969, "name": "exchangeBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1958, "src": "5041:15:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 1970, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1937, "src": "5074:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 1971, "name": "makerAddress1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1939, "src": "5103:13:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1972, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1943, "src": "5134:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1966, "name": "_payProtocolFeeToFeeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2068, "src": "4936:29:29", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (bytes32,address,uint256,uint256,address,address) returns (uint256)"}}, "id": 1973, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4936:224:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "4916:244:29"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 1976, "name": "orderHash2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1935, "src": "5284:10:29", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 1977, "name": "feeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1949, "src": "5312:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1980, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 1978, "name": "exchangeBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1958, "src": "5342:15:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"argumentTypes": null, "id": 1979, "name": "valuePaid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1965, "src": "5360:9:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5342:27:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 1981, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1937, "src": "5387:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 1982, "name": "makerAddress2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1941, "src": "5416:13:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 1983, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1943, "src": "5447:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1975, "name": "_payProtocolFeeToFeeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2068, "src": "5237:29:29", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (bytes32,address,uint256,uint256,address,address) returns (uint256)"}}, "id": 1984, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5237:236:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1985, "nodeType": "ExpressionStatement", "src": "5237:236:29"}, {"expression": {"argumentTypes": null, "hexValue": "74727565", "id": 1986, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5494:4:29", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 1947, "id": 1987, "nodeType": "Return", "src": "5487:11:29"}]}}]}, "documentation": "@dev Pays a protocol fee for two orders (used when settling functions in MixinMatchOrders)\n @param orderHash1 Hash of the first order being filled.\n @param orderHash2 Hash of the second order being filled.\n @param protocolFee Value of the fee being paid (equal to protocolFeeMultiplier * tx.gasPrice).\n @param makerAddress1 Address of maker of first order being filled.\n @param makerAddress2 Address of maker of second order being filled.\n @param takerAddress Address filling orders.", "id": 1994, "implemented": true, "kind": "function", "modifiers": [], "name": "_payTwoProtocolFees", "nodeType": "FunctionDefinition", "parameters": {"id": 1944, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1933, "name": "orderHash1", "nodeType": "VariableDeclaration", "scope": 1994, "src": "4337:18:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1932, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4337:7:29", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1935, "name": "orderHash2", "nodeType": "VariableDeclaration", "scope": 1994, "src": "4365:18:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1934, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4365:7:29", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1937, "name": "protocolFee", "nodeType": "VariableDeclaration", "scope": 1994, "src": "4393:19:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1936, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4393:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1939, "name": "makerAddress1", "nodeType": "VariableDeclaration", "scope": 1994, "src": "4422:21:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1938, "name": "address", "nodeType": "ElementaryTypeName", "src": "4422:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1941, "name": "makerAddress2", "nodeType": "VariableDeclaration", "scope": 1994, "src": "4453:21:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1940, "name": "address", "nodeType": "ElementaryTypeName", "src": "4453:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1943, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 1994, "src": "4484:20:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1942, "name": "address", "nodeType": "ElementaryTypeName", "src": "4484:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "4327:183:29"}, "returnParameters": {"id": 1947, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1946, "name": "", "nodeType": "VariableDeclaration", "scope": 1994, "src": "4545:4:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1945, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4545:4:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "4544:6:29"}, "scope": 2069, "src": "4299:1259:29", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 2067, "nodeType": "Block", "src": "6317:938:29", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2013, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2011, "name": "exchangeBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2000, "src": "6496:15:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "id": 2012, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2002, "src": "6515:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6496:30:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2019, "nodeType": "IfStatement", "src": "6492:84:29", "trueBody": {"id": 2018, "nodeType": "Block", "src": "6528:48:29", "statements": [{"expression": {"argumentTypes": null, "id": 2016, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2014, "name": "valuePaid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, "src": "6542:9:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 2015, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2002, "src": "6554:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6542:23:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2017, "nodeType": "ExpressionStatement", "src": "6542:23:29"}]}}, {"assignments": [2021], "declarations": [{"constant": false, "id": 2021, "name": "payProtocolFeeData", "nodeType": "VariableDeclaration", "scope": 2067, "src": "6585:31:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2020, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6585:5:29", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 2035, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 2026, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6672:1:29", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 2025, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6664:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 2027, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6664:10:29", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}], "id": 2024, "name": "IStaking", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11510, "src": "6655:8:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IStaking_$11510_$", "typeString": "type(contract IStaking)"}}, "id": 2028, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6655:20:29", "typeDescriptions": {"typeIdentifier": "t_contract$_IStaking_$11510", "typeString": "contract IStaking"}}, "id": 2029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "payProtocolFee", "nodeType": "MemberAccess", "referencedDeclaration": 11386, "src": "6655:35:29", "typeDescriptions": {"typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256) payable external"}}, "id": 2030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "selector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6655:44:29", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 2031, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2004, "src": "6713:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2032, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2006, "src": "6739:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2033, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2002, "src": "6765:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 2022, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "6619:3:29", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 2023, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6619:22:29", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 2034, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6619:167:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "6585:201:29"}, {"assignments": [2037, 2039], "declarations": [{"constant": false, "id": 2037, "name": "didSucceed", "nodeType": "VariableDeclaration", "scope": 2067, "src": "6851:15:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2036, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6851:4:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2039, "name": "returnData", "nodeType": "VariableDeclaration", "scope": 2067, "src": "6868:23:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2038, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6868:5:29", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 2047, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2045, "name": "payProtocolFeeData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2021, "src": "6930:18:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "arguments": [{"argumentTypes": null, "id": 2043, "name": "valuePaid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, "src": "6919:9:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2040, "name": "feeCollector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1998, "src": "6895:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6895:17:29", "typeDescriptions": {"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)"}}, "id": 2042, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6895:23:29", "typeDescriptions": {"typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"}}, "id": 2044, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6895:34:29", "typeDescriptions": {"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)"}}, "id": 2046, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6895:54:29", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "6850:99:29"}, {"condition": {"argumentTypes": null, "id": 2049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "6963:11:29", "subExpression": {"argumentTypes": null, "id": 2048, "name": "didSucceed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2037, "src": "6964:10:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2064, "nodeType": "IfStatement", "src": "6959:264:29", "trueBody": {"id": 2063, "nodeType": "Block", "src": "6976:247:29", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2055, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1996, "src": "7071:9:29", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2056, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2002, "src": "7098:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 2057, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2004, "src": "7127:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2058, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2006, "src": "7157:12:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2059, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2039, "src": "7187:10:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2053, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "7012:21:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2054, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "PayProtocolFeeError", "nodeType": "MemberAccess", "referencedDeclaration": 9341, "src": "7012:41:29", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes32,uint256,address,address,bytes memory) pure returns (bytes memory)"}}, "id": 2060, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7012:199:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2050, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "6990:13:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "6990:21:29", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2061, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6990:222:29", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2062, "nodeType": "ExpressionStatement", "src": "6990:222:29"}]}}, {"expression": {"argumentTypes": null, "id": 2065, "name": "valuePaid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, "src": "7239:9:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2010, "id": 2066, "nodeType": "Return", "src": "7232:16:29"}]}, "documentation": "@dev Pays a single protocol fee.\n @param orderHash Hash of the order being filled.\n @param feeCollector Address of protocolFeeCollector contract.\n @param exchangeBalance Assumed ETH balance of Exchange contract (in wei).\n @param protocolFee Value of the fee being paid (equal to protocolFeeMultiplier * tx.gasPrice).\n @param makerAddress Address of maker of order being filled.\n @param takerAddress Address filling order.", "id": 2068, "implemented": true, "kind": "function", "modifiers": [], "name": "_payProtocolFeeToFeeCollector", "nodeType": "FunctionDefinition", "parameters": {"id": 2007, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1996, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 2068, "src": "6084:17:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1995, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6084:7:29", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 1998, "name": "feeCollector", "nodeType": "VariableDeclaration", "scope": 2068, "src": "6111:20:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1997, "name": "address", "nodeType": "ElementaryTypeName", "src": "6111:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2000, "name": "exchangeBalance", "nodeType": "VariableDeclaration", "scope": 2068, "src": "6141:23:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1999, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6141:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2002, "name": "protocolFee", "nodeType": "VariableDeclaration", "scope": 2068, "src": "6174:19:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2001, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6174:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2004, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 2068, "src": "6203:20:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2003, "name": "address", "nodeType": "ElementaryTypeName", "src": "6203:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2006, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 2068, "src": "6233:20:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2005, "name": "address", "nodeType": "ElementaryTypeName", "src": "6233:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "6074:185:29"}, "returnParameters": {"id": 2010, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2009, "name": "valuePaid", "nodeType": "VariableDeclaration", "scope": 2068, "src": "6294:17:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2008, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6294:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "6293:19:29"}, "scope": 2069, "src": "6036:1219:29", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}], "scope": 2070, "src": "914:6343:29"}], "src": "580:6678:29"}, "id": 29}, "contracts/exchange/MixinSignatureValidator.sol": {"ast": {"absolutePath": "contracts/exchange/MixinSignatureValidator.sol", "exportedSymbols": {"MixinSignatureValidator": [3070]}, "id": 3071, "nodeType": "SourceUnit", "nodes": [{"id": 2071, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:30"}, {"id": 2072, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:30"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibBytes.sol", "file": "@0x/contracts-utils/contracts/src/LibBytes.sol", "id": 2073, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 9844, "src": "639:56:30", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibEIP1271.sol", "file": "@0x/contracts-utils/contracts/src/LibEIP1271.sol", "id": 2074, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 11601, "src": "696:58:30", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "@0x/contracts-utils/contracts/src/LibRichErrors.sol", "id": 2075, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 9873, "src": "755:61:30", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol", "id": 2076, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 11029, "src": "817:64:30", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "id": 2077, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 11595, "src": "882:76:30", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol", "id": 2078, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 8732, "src": "959:79:30", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "id": 2079, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 9343, "src": "1039:77:30", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IWallet.sol", "file": "./interfaces/IWallet.sol", "id": 2080, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 7913, "src": "1117:34:30", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IEIP1271Wallet.sol", "file": "./interfaces/IEIP1271Wallet.sol", "id": 2081, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 7543, "src": "1152:41:30", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/ISignatureValidator.sol", "file": "./interfaces/ISignatureValidator.sol", "id": 2082, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 7845, "src": "1194:46:30", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IEIP1271Data.sol", "file": "./interfaces/IEIP1271Data.sol", "id": 2083, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 7528, "src": "1241:39:30", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/MixinTransactions.sol", "file": "./MixinTransactions.sol", "id": 2084, "nodeType": "ImportDirective", "scope": 3071, "sourceUnit": 3413, "src": "1281:33:30", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 2085, "name": "LibEIP712ExchangeDomain", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8731, "src": "1357:23:30", "typeDescriptions": {"typeIdentifier": "t_contract$_LibEIP712ExchangeDomain_$8731", "typeString": "contract LibEIP712ExchangeDomain"}}, "id": 2086, "nodeType": "InheritanceSpecifier", "src": "1357:23:30"}, {"arguments": null, "baseName": {"contractScope": null, "id": 2087, "name": "LibEIP1271", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11600, "src": "1386:10:30", "typeDescriptions": {"typeIdentifier": "t_contract$_LibEIP1271_$11600", "typeString": "contract LibEIP1271"}}, "id": 2088, "nodeType": "InheritanceSpecifier", "src": "1386:10:30"}, {"arguments": null, "baseName": {"contractScope": null, "id": 2089, "name": "ISignatureValidator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7844, "src": "1402:19:30", "typeDescriptions": {"typeIdentifier": "t_contract$_ISignatureValidator_$7844", "typeString": "contract ISignatureValidator"}}, "id": 2090, "nodeType": "InheritanceSpecifier", "src": "1402:19:30"}, {"arguments": null, "baseName": {"contractScope": null, "id": 2091, "name": "MixinTransactions", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3412, "src": "1427:17:30", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinTransactions_$3412", "typeString": "contract MixinTransactions"}}, "id": 2092, "nodeType": "InheritanceSpecifier", "src": "1427:17:30"}], "contractDependencies": [3412, 7844, 7879, 8731, 11323, 11600, 11874], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 3070, "linearizedBaseContracts": [3070, 3412, 7879, 7844, 11600, 8731, 11323, 11874], "name": "MixinSignatureValidator", "nodeType": "ContractDefinition", "nodes": [{"id": 2095, "libraryName": {"contractScope": null, "id": 2093, "name": "LibBytes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9843, "src": "1457:8:30", "typeDescriptions": {"typeIdentifier": "t_contract$_LibBytes_$9843", "typeString": "library LibBytes"}}, "nodeType": "UsingForDirective", "src": "1451:25:30", "typeName": {"id": 2094, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1470:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, {"id": 2098, "libraryName": {"contractScope": null, "id": 2096, "name": "LibOrder", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11028, "src": "1487:8:30", "typeDescriptions": {"typeIdentifier": "t_contract$_LibOrder_$11028", "typeString": "library LibOrder"}}, "nodeType": "UsingForDirective", "src": "1481:34:30", "typeName": {"contractScope": null, "id": 2097, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "1500:14:30", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}}, {"id": 2101, "libraryName": {"contractScope": null, "id": 2099, "name": "LibZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11594, "src": "1526:20:30", "typeDescriptions": {"typeIdentifier": "t_contract$_LibZeroExTransaction_$11594", "typeString": "library LibZeroExTransaction"}}, "nodeType": "UsingForDirective", "src": "1520:70:30", "typeName": {"contractScope": null, "id": 2100, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "1551:38:30", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}}, {"constant": true, "id": 2104, "name": "LEGACY_WALLET_MAGIC_VALUE", "nodeType": "VariableDeclaration", "scope": 3070, "src": "1743:62:30", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2102, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1743:6:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786230363731333831", "id": 2103, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1795:10:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_2959545217_by_1", "typeString": "int_const 2959545217"}, "value": "0xb0671381"}, "visibility": "private"}, {"constant": false, "id": 2110, "name": "preSigned", "nodeType": "VariableDeclaration", "scope": 3070, "src": "1972:63:30", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}, "typeName": {"id": 2109, "keyType": {"id": 2105, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1981:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1972:46:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}, "valueType": {"id": 2108, "keyType": {"id": 2106, "name": "address", "nodeType": "ElementaryTypeName", "src": "2001:7:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1992:25:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}, "valueType": {"id": 2107, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2012:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}}}, "value": null, "visibility": "public"}, {"constant": false, "id": 2116, "name": "allowedValidators", "nodeType": "VariableDeclaration", "scope": 3070, "src": "2265:71:30", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "typeName": {"id": 2115, "keyType": {"id": 2111, "name": "address", "nodeType": "ElementaryTypeName", "src": "2274:7:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "2265:46:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "valueType": {"id": 2114, "keyType": {"id": 2112, "name": "address", "nodeType": "ElementaryTypeName", "src": "2294:7:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "2285:25:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}, "valueType": {"id": 2113, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2305:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}}}, "value": null, "visibility": "public"}, {"body": {"id": 2136, "nodeType": "Block", "src": "2633:115:30", "statements": [{"assignments": [2124], "declarations": [{"constant": false, "id": 2124, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 2136, "src": "2643:21:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2123, "name": "address", "nodeType": "ElementaryTypeName", "src": "2643:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 2127, "initialValue": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 2125, "name": "_getCurrentContextAddress", "nodeType": "Identifier", "overloadedDeclarations": [3411], "referencedDeclaration": 3411, "src": "2667:25:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2667:27:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2643:51:30"}, {"expression": {"argumentTypes": null, "id": 2134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 2128, "name": "preSigned", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2110, "src": "2704:9:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}}, "id": 2131, "indexExpression": {"argumentTypes": null, "id": 2129, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2118, "src": "2714:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2704:15:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 2132, "indexExpression": {"argumentTypes": null, "id": 2130, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2124, "src": "2720:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2704:30:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "74727565", "id": 2133, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2737:4:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "2704:37:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2135, "nodeType": "ExpressionStatement", "src": "2704:37:30"}]}, "documentation": "@dev Approves a hash on-chain.\n After presigning a hash, the preSign signature type will become valid for that hash and signer.\n @param hash Any 32-byte hash.", "id": 2137, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 2121, "modifierName": {"argumentTypes": null, "id": 2120, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "2601:27:30", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "2601:27:30"}], "name": "preSign", "nodeType": "FunctionDefinition", "parameters": {"id": 2119, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2118, "name": "hash", "nodeType": "VariableDeclaration", "scope": 2137, "src": "2546:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2117, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2546:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "2545:14:30"}, "returnParameters": {"id": 2122, "nodeType": "ParameterList", "parameters": [], "src": "2633:0:30"}, "scope": 3070, "src": "2529:219:30", "stateMutability": "payable", "superFunction": 7785, "visibility": "external"}, {"body": {"id": 2165, "nodeType": "Block", "src": "3210:269:30", "statements": [{"assignments": [2147], "declarations": [{"constant": false, "id": 2147, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 2165, "src": "3220:21:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2146, "name": "address", "nodeType": "ElementaryTypeName", "src": "3220:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 2150, "initialValue": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 2148, "name": "_getCurrentContextAddress", "nodeType": "Identifier", "overloadedDeclarations": [3411], "referencedDeclaration": 3411, "src": "3244:25:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2149, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3244:27:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3220:51:30"}, {"expression": {"argumentTypes": null, "id": 2157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 2151, "name": "allowedValidators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2116, "src": "3281:17:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 2154, "indexExpression": {"argumentTypes": null, "id": 2152, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2147, "src": "3299:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3281:32:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 2155, "indexExpression": {"argumentTypes": null, "id": 2153, "name": "validatorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2139, "src": "3314:16:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3281:50:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 2156, "name": "approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2141, "src": "3334:8:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3281:61:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2158, "nodeType": "ExpressionStatement", "src": "3281:61:30"}, {"eventCall": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2160, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2147, "src": "3397:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2161, "name": "validatorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2139, "src": "3424:16:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2162, "name": "approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2141, "src": "3454:8:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 2159, "name": "SignatureValidatorApproval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7780, "src": "3357:26:30", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)"}}, "id": 2163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3357:115:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2164, "nodeType": "EmitStatement", "src": "3352:120:30"}]}, "documentation": "@dev Approves/unnapproves a Validator contract to verify signatures on signer's behalf\n using the `Validator` signature type.\n @param validatorAddress Address of Validator contract.\n @param approval Approval or disapproval of Validator contract.", "id": 2166, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 2144, "modifierName": {"argumentTypes": null, "id": 2143, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "3178:27:30", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "3178:27:30"}], "name": "setSignatureValidatorApproval", "nodeType": "FunctionDefinition", "parameters": {"id": 2142, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2139, "name": "validatorAddress", "nodeType": "VariableDeclaration", "scope": 2166, "src": "3083:24:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2138, "name": "address", "nodeType": "ElementaryTypeName", "src": "3083:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2141, "name": "approval", "nodeType": "VariableDeclaration", "scope": 2166, "src": "3117:13:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2140, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3117:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "3073:63:30"}, "returnParameters": {"id": 2145, "nodeType": "ParameterList", "parameters": [], "src": "3210:0:30"}, "scope": 3070, "src": "3035:444:30", "stateMutability": "payable", "superFunction": 7792, "visibility": "external"}, {"body": {"id": 2221, "nodeType": "Block", "src": "4015:819:30", "statements": [{"assignments": [2178], "declarations": [{"constant": false, "id": 2178, "name": "signatureType", "nodeType": "VariableDeclaration", "scope": 2221, "src": "4025:27:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "typeName": {"contractScope": null, "id": 2177, "name": "SignatureType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7772, "src": "4025:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "value": null, "visibility": "internal"}], "id": 2184, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2180, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2168, "src": "4092:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2181, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2170, "src": "4110:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2182, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2172, "src": "4137:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2179, "name": "_readValidSignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2758, "src": "4055:23:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_enum$_SignatureType_$7772_$", "typeString": "function (bytes32,address,bytes memory) pure returns (enum ISignatureValidator.SignatureType)"}}, "id": 2183, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4055:101:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "VariableDeclarationStatement", "src": "4025:131:30"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2185, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2178, "src": "4275:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2186, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "4292:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2187, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Validator", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4292:23:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "4275:40:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2189, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2178, "src": "4331:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2190, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "4348:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2191, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "EIP1271Wallet", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4348:27:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "4331:44:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4275:100:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2209, "nodeType": "IfStatement", "src": "4258:394:30", "trueBody": {"id": 2208, "nodeType": "Block", "src": "4386:266:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2199, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "4476:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "4476:41:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 2201, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INAPPROPRIATE_SIGNATURE_TYPE", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4476:70:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 2202, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2168, "src": "4564:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2203, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2170, "src": "4586:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2204, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2172, "src": "4617:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2197, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "4422:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9013, "src": "4422:36:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_SignatureErrorCodes_$8760_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.SignatureErrorCodes,bytes32,address,bytes memory) pure returns (bytes memory)"}}, "id": 2205, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4422:218:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2194, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "4400:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "4400:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2206, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4400:241:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2207, "nodeType": "ExpressionStatement", "src": "4400:241:30"}]}}, {"expression": {"argumentTypes": null, "id": 2217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2210, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2175, "src": "4661:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2212, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2178, "src": "4712:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, {"argumentTypes": null, "id": 2213, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2168, "src": "4739:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2214, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2170, "src": "4757:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2215, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2172, "src": "4784:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2211, "name": "_validateHashSignatureTypes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2628, "src": "4671:27:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_enum$_SignatureType_$7772_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (enum ISignatureValidator.SignatureType,bytes32,address,bytes memory) view returns (bool)"}}, "id": 2216, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4671:132:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4661:142:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2218, "nodeType": "ExpressionStatement", "src": "4661:142:30"}, {"expression": {"argumentTypes": null, "id": 2219, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2175, "src": "4820:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2176, "id": 2220, "nodeType": "Return", "src": "4813:14:30"}]}, "documentation": "@dev Verifies that a hash has been signed by the given signer.\n @param hash Any 32-byte hash.\n @param signerAddress Address that should have signed the given hash.\n @param signature Proof that the hash has been signed by signer.\n @return isValid `true` if the signature is valid for the given hash and signer.", "id": 2222, "implemented": true, "kind": "function", "modifiers": [], "name": "isValidHashSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 2173, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2168, "name": "hash", "nodeType": "VariableDeclaration", "scope": 2222, "src": "3870:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2167, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3870:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2170, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 2222, "src": "3892:21:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2169, "name": "address", "nodeType": "ElementaryTypeName", "src": "3892:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2172, "name": "signature", "nodeType": "VariableDeclaration", "scope": 2222, "src": "3923:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2171, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3923:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "3860:91:30"}, "returnParameters": {"id": 2176, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2175, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 2222, "src": "3997:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2174, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3997:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "3996:14:30"}, "scope": 3070, "src": "3831:1003:30", "stateMutability": "view", "superFunction": 7803, "visibility": "public"}, {"body": {"id": 2248, "nodeType": "Block", "src": "5265:237:30", "statements": [{"assignments": [2232], "declarations": [{"constant": false, "id": 2232, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 2248, "src": "5275:17:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2231, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5275:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 2237, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2235, "name": "EIP712_EXCHANGE_DOMAIN_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8699, "src": "5318:27:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 2233, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2224, "src": "5295:5:30", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 2234, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "getTypedDataHash", "nodeType": "MemberAccess", "referencedDeclaration": 10992, "src": "5295:22:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Order_$10963_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,bytes32) pure returns (bytes32)"}}, "id": 2236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5295:51:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5275:71:30"}, {"expression": {"argumentTypes": null, "id": 2244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2238, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2229, "src": "5356:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2240, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2224, "src": "5410:5:30", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 2241, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2232, "src": "5429:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2242, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2226, "src": "5452:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2239, "name": "_isValidOrderWithHashSignature", "nodeType": "Identifier", "overloadedDeclarations": [2348], "referencedDeclaration": 2348, "src": "5366:30:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Order_$10963_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (struct LibOrder.Order memory,bytes32,bytes memory) view returns (bool)"}}, "id": 2243, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5366:105:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "5356:115:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2245, "nodeType": "ExpressionStatement", "src": "5356:115:30"}, {"expression": {"argumentTypes": null, "id": 2246, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2229, "src": "5488:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2230, "id": 2247, "nodeType": "Return", "src": "5481:14:30"}]}, "documentation": "@dev Verifies that a signature for an order is valid.\n @param order The order.\n @param signature Proof that the order has been signed by signer.\n @return isValid `true` if the signature is valid for the given order and signer.", "id": 2249, "implemented": true, "kind": "function", "modifiers": [], "name": "isValidOrderSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 2227, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2224, "name": "order", "nodeType": "VariableDeclaration", "scope": 2249, "src": "5136:27:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 2223, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "5136:14:30", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2226, "name": "signature", "nodeType": "VariableDeclaration", "scope": 2249, "src": "5173:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2225, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5173:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "5126:75:30"}, "returnParameters": {"id": 2230, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2229, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 2249, "src": "5247:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2228, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5247:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "5246:14:30"}, "scope": 3070, "src": "5096:406:30", "stateMutability": "view", "superFunction": 7812, "visibility": "public"}, {"body": {"id": 2275, "nodeType": "Block", "src": "5992:267:30", "statements": [{"assignments": [2259], "declarations": [{"constant": false, "id": 2259, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 2275, "src": "6002:23:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2258, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6002:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 2264, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2262, "name": "EIP712_EXCHANGE_DOMAIN_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8699, "src": "6057:27:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 2260, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "6028:11:30", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 2261, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "getTypedDataHash", "nodeType": "MemberAccess", "referencedDeclaration": 11553, "src": "6028:28:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory,bytes32) pure returns (bytes32)"}}, "id": 2263, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6028:57:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "6002:83:30"}, {"expression": {"argumentTypes": null, "id": 2271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2265, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2256, "src": "6095:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2267, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "6155:11:30", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, {"argumentTypes": null, "id": 2268, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2259, "src": "6180:15:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2269, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2253, "src": "6209:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2266, "name": "_isValidTransactionWithHashSignature", "nodeType": "Identifier", "overloadedDeclarations": [2420], "referencedDeclaration": 2420, "src": "6105:36:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory,bytes32,bytes memory) view returns (bool)"}}, "id": 2270, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6105:123:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6095:133:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2272, "nodeType": "ExpressionStatement", "src": "6095:133:30"}, {"expression": {"argumentTypes": null, "id": 2273, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2256, "src": "6245:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2257, "id": 2274, "nodeType": "Return", "src": "6238:14:30"}]}, "documentation": "@dev Verifies that a signature for a transaction is valid.\n @param transaction The transaction.\n @param signature Proof that the order has been signed by signer.\n @return isValid `true` if the signature is valid for the given transaction and signer.", "id": 2276, "implemented": true, "kind": "function", "modifiers": [], "name": "isValidTransactionSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 2254, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2251, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 2276, "src": "5833:57:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 2250, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "5833:38:30", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2253, "name": "signature", "nodeType": "VariableDeclaration", "scope": 2276, "src": "5900:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2252, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5900:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "5823:105:30"}, "returnParameters": {"id": 2257, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2256, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 2276, "src": "5974:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2255, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5974:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "5973:14:30"}, "scope": 3070, "src": "5787:472:30", "stateMutability": "view", "superFunction": 7821, "visibility": "public"}, {"body": {"id": 2347, "nodeType": "Block", "src": "6824:1160:30", "statements": [{"assignments": [2288], "declarations": [{"constant": false, "id": 2288, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 2347, "src": "6834:21:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2287, "name": "address", "nodeType": "ElementaryTypeName", "src": "6834:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 2291, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2289, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2278, "src": "6858:5:30", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 2290, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 10936, "src": "6858:18:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "6834:42:30"}, {"assignments": [2293], "declarations": [{"constant": false, "id": 2293, "name": "signatureType", "nodeType": "VariableDeclaration", "scope": 2347, "src": "6886:27:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "typeName": {"contractScope": null, "id": 2292, "name": "SignatureType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7772, "src": "6886:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "value": null, "visibility": "internal"}], "id": 2299, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2295, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2280, "src": "6953:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2296, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2288, "src": "6976:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2297, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2282, "src": "7003:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2294, "name": "_readValidSignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2758, "src": "6916:23:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_enum$_SignatureType_$7772_$", "typeString": "function (bytes32,address,bytes memory) pure returns (enum ISignatureValidator.SignatureType)"}}, "id": 2298, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6916:106:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "VariableDeclarationStatement", "src": "6886:136:30"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2300, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2293, "src": "7036:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2301, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "7053:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2302, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Validator", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7053:23:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "7036:40:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2317, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2293, "src": "7381:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2318, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "7398:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2319, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "EIP1271Wallet", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7398:27:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "7381:44:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 2342, "nodeType": "Block", "src": "7693:261:30", "statements": [{"expression": {"argumentTypes": null, "id": 2340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2333, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2285, "src": "7776:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2335, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2293, "src": "7831:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, {"argumentTypes": null, "id": 2336, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2280, "src": "7862:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2337, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2288, "src": "7889:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2338, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2282, "src": "7920:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2334, "name": "_validateHashSignatureTypes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2628, "src": "7786:27:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_enum$_SignatureType_$7772_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (enum ISignatureValidator.SignatureType,bytes32,address,bytes memory) view returns (bool)"}}, "id": 2339, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7786:157:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7776:167:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2341, "nodeType": "ExpressionStatement", "src": "7776:167:30"}]}, "id": 2343, "nodeType": "IfStatement", "src": "7377:577:30", "trueBody": {"id": 2332, "nodeType": "Block", "src": "7427:260:30", "statements": [{"expression": {"argumentTypes": null, "id": 2330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2321, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2285, "src": "7507:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2324, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2278, "src": "7587:5:30", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 2325, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2280, "src": "7594:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2323, "name": "_encodeEIP1271OrderWithHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2781, "src": "7559:27:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,bytes32) pure returns (bytes memory)"}}, "id": 2326, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7559:45:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 2327, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2288, "src": "7622:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2328, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2282, "src": "7653:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2322, "name": "_validateBytesWithWallet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2909, "src": "7517:24:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (bytes memory,address,bytes memory) view returns (bool)"}}, "id": 2329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7517:159:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7507:169:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2331, "nodeType": "ExpressionStatement", "src": "7507:169:30"}]}}, "id": 2344, "nodeType": "IfStatement", "src": "7032:922:30", "trueBody": {"id": 2316, "nodeType": "Block", "src": "7078:293:30", "statements": [{"expression": {"argumentTypes": null, "id": 2314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2304, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2285, "src": "7161:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2307, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2278, "src": "7244:5:30", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 2308, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2280, "src": "7251:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2306, "name": "_encodeEIP1271OrderWithHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2781, "src": "7216:27:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$10963_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,bytes32) pure returns (bytes memory)"}}, "id": 2309, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7216:45:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 2310, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2280, "src": "7279:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2311, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2288, "src": "7306:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2312, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2282, "src": "7337:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2305, "name": "_validateBytesWithValidator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2985, "src": "7171:27:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (bytes memory,bytes32,address,bytes memory) view returns (bool)"}}, "id": 2313, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7171:189:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7161:199:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2315, "nodeType": "ExpressionStatement", "src": "7161:199:30"}]}}, {"expression": {"argumentTypes": null, "id": 2345, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2285, "src": "7970:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2286, "id": 2346, "nodeType": "Return", "src": "7963:14:30"}]}, "documentation": "@dev Verifies that an order, with provided order hash, has been signed\n by the given signer.\n @param order The order.\n @param orderHash The hash of the order.\n @param signature Proof that the hash has been signed by signer.\n @return isValid True if the signature is valid for the given order and signer.", "id": 2348, "implemented": true, "kind": "function", "modifiers": [], "name": "_isValidOrderWithHashSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 2283, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2278, "name": "order", "nodeType": "VariableDeclaration", "scope": 2348, "src": "6666:27:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 2277, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "6666:14:30", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2280, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 2348, "src": "6703:17:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2279, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6703:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2282, "name": "signature", "nodeType": "VariableDeclaration", "scope": 2348, "src": "6730:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2281, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6730:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "6656:102:30"}, "returnParameters": {"id": 2286, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2285, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 2348, "src": "6806:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2284, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6806:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "6805:14:30"}, "scope": 3070, "src": "6617:1367:30", "stateMutability": "view", "superFunction": 7832, "visibility": "internal"}, {"body": {"id": 2419, "nodeType": "Block", "src": "8626:1233:30", "statements": [{"assignments": [2360], "declarations": [{"constant": false, "id": 2360, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 2419, "src": "8636:21:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2359, "name": "address", "nodeType": "ElementaryTypeName", "src": "8636:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 2363, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2361, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2350, "src": "8660:11:30", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 2362, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "signerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 11528, "src": "8660:25:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "8636:49:30"}, {"assignments": [2365], "declarations": [{"constant": false, "id": 2365, "name": "signatureType", "nodeType": "VariableDeclaration", "scope": 2419, "src": "8695:27:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "typeName": {"contractScope": null, "id": 2364, "name": "SignatureType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7772, "src": "8695:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "value": null, "visibility": "internal"}], "id": 2371, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2367, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2352, "src": "8762:15:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2368, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2360, "src": "8791:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2369, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2354, "src": "8818:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2366, "name": "_readValidSignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2758, "src": "8725:23:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_enum$_SignatureType_$7772_$", "typeString": "function (bytes32,address,bytes memory) pure returns (enum ISignatureValidator.SignatureType)"}}, "id": 2370, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8725:112:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "VariableDeclarationStatement", "src": "8695:142:30"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2372, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2365, "src": "8851:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2373, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "8868:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2374, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Validator", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8868:23:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "8851:40:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2389, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2365, "src": "9226:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2390, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "9243:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2391, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "EIP1271Wallet", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9243:27:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "9226:44:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 2414, "nodeType": "Block", "src": "9562:267:30", "statements": [{"expression": {"argumentTypes": null, "id": 2412, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2405, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2357, "src": "9645:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2407, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2365, "src": "9700:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, {"argumentTypes": null, "id": 2408, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2352, "src": "9731:15:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2409, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2360, "src": "9764:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2410, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2354, "src": "9795:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2406, "name": "_validateHashSignatureTypes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2628, "src": "9655:27:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_enum$_SignatureType_$7772_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (enum ISignatureValidator.SignatureType,bytes32,address,bytes memory) view returns (bool)"}}, "id": 2411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9655:163:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "9645:173:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2413, "nodeType": "ExpressionStatement", "src": "9645:173:30"}]}, "id": 2415, "nodeType": "IfStatement", "src": "9222:607:30", "trueBody": {"id": 2404, "nodeType": "Block", "src": "9272:284:30", "statements": [{"expression": {"argumentTypes": null, "id": 2402, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2393, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2357, "src": "9358:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2396, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2350, "src": "9444:11:30", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, {"argumentTypes": null, "id": 2397, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2352, "src": "9457:15:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2395, "name": "_encodeEIP1271TransactionWithHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2804, "src": "9410:33:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory,bytes32) pure returns (bytes memory)"}}, "id": 2398, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9410:63:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 2399, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2360, "src": "9491:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2400, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2354, "src": "9522:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2394, "name": "_validateBytesWithWallet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2909, "src": "9368:24:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (bytes memory,address,bytes memory) view returns (bool)"}}, "id": 2401, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9368:177:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "9358:187:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2403, "nodeType": "ExpressionStatement", "src": "9358:187:30"}]}}, "id": 2416, "nodeType": "IfStatement", "src": "8847:982:30", "trueBody": {"id": 2388, "nodeType": "Block", "src": "8893:323:30", "statements": [{"expression": {"argumentTypes": null, "id": 2386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2376, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2357, "src": "8982:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2379, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2350, "src": "9071:11:30", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, {"argumentTypes": null, "id": 2380, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2352, "src": "9084:15:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2378, "name": "_encodeEIP1271TransactionWithHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2804, "src": "9037:33:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory,bytes32) pure returns (bytes memory)"}}, "id": 2381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9037:63:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 2382, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2352, "src": "9118:15:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2383, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2360, "src": "9151:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2384, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2354, "src": "9182:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2377, "name": "_validateBytesWithValidator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2985, "src": "8992:27:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (bytes memory,bytes32,address,bytes memory) view returns (bool)"}}, "id": 2385, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8992:213:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "8982:223:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2387, "nodeType": "ExpressionStatement", "src": "8982:223:30"}]}}, {"expression": {"argumentTypes": null, "id": 2417, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2357, "src": "9845:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2358, "id": 2418, "nodeType": "Return", "src": "9838:14:30"}]}, "documentation": "@dev Verifies that a transaction, with provided order hash, has been signed\n by the given signer.\n @param transaction The transaction.\n @param transactionHash The hash of the transaction.\n @param signature Proof that the hash has been signed by signer.\n @return isValid True if the signature is valid for the given transaction and signer.", "id": 2420, "implemented": true, "kind": "function", "modifiers": [], "name": "_isValidTransactionWithHashSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 2355, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2350, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 2420, "src": "8432:57:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 2349, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "8432:38:30", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2352, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 2420, "src": "8499:23:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2351, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8499:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2354, "name": "signature", "nodeType": "VariableDeclaration", "scope": 2420, "src": "8532:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2353, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8532:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8422:138:30"}, "returnParameters": {"id": 2358, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2357, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 2420, "src": "8608:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2356, "name": "bool", "nodeType": "ElementaryTypeName", "src": "8608:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "8607:14:30"}, "scope": 3070, "src": "8377:1482:30", "stateMutability": "view", "superFunction": 7843, "visibility": "internal"}, {"body": {"id": 2627, "nodeType": "Block", "src": "10195:2829:30", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2433, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2422, "src": "10452:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2434, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "10469:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2435, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Invalid", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10469:21:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "10452:38:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2462, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2422, "src": "10897:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2463, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "10914:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2464, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "EIP712", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10914:20:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "10897:37:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2524, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2422, "src": "11647:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2525, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "11664:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2526, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "EthSign", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11664:21:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "11647:38:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2592, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2422, "src": "12533:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2593, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "12550:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2594, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Wallet", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12550:20:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "12533:37:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 2620, "nodeType": "Block", "src": "12794:200:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2606, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2422, "src": "12815:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2607, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "12832:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2608, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "PreSigned", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12832:23:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "12815:40:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 2605, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12080, "src": "12808:6:30", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 2610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12808:48:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2611, "nodeType": "ExpressionStatement", "src": "12808:48:30"}, {"expression": {"argumentTypes": null, "id": 2618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2612, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2431, "src": "12943:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 2613, "name": "preSigned", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2110, "src": "12953:9:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}}, "id": 2615, "indexExpression": {"argumentTypes": null, "id": 2614, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2424, "src": "12963:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12953:15:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 2617, "indexExpression": {"argumentTypes": null, "id": 2616, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2426, "src": "12969:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12953:30:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "12943:40:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2619, "nodeType": "ExpressionStatement", "src": "12943:40:30"}]}, "id": 2621, "nodeType": "IfStatement", "src": "12529:465:30", "trueBody": {"id": 2604, "nodeType": "Block", "src": "12572:216:30", "statements": [{"expression": {"argumentTypes": null, "id": 2602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2596, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2431, "src": "12586:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2598, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2424, "src": "12637:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2599, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2426, "src": "12659:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2600, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "12690:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2597, "name": "_validateHashWithWallet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2886, "src": "12596:23:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (bytes32,address,bytes memory) view returns (bool)"}}, "id": 2601, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12596:117:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "12586:127:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2603, "nodeType": "ExpressionStatement", "src": "12586:127:30"}]}}, "id": 2622, "nodeType": "IfStatement", "src": "11643:1351:30", "trueBody": {"id": 2591, "nodeType": "Block", "src": "11687:836:30", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2528, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "11705:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11705:16:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "hexValue": "3636", "id": 2530, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11725:2:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66"}, "value": "66"}, "src": "11705:22:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2547, "nodeType": "IfStatement", "src": "11701:308:30", "trueBody": {"id": 2546, "nodeType": "Block", "src": "11729:280:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2537, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "11827:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "11827:41:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 2539, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_LENGTH", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11827:56:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 2540, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2424, "src": "11905:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2541, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2426, "src": "11931:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2542, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "11966:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2535, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "11769:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2536, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9013, "src": "11769:36:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_SignatureErrorCodes_$8760_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.SignatureErrorCodes,bytes32,address,bytes memory) pure returns (bytes memory)"}}, "id": 2543, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11769:224:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2532, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "11747:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "11747:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2544, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11747:247:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2545, "nodeType": "ExpressionStatement", "src": "11747:247:30"}]}}, {"assignments": [2549], "declarations": [{"constant": false, "id": 2549, "name": "v", "nodeType": "VariableDeclaration", "scope": 2591, "src": "12022:7:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2548, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "12022:5:30", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": null, "visibility": "internal"}], "id": 2555, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 2551, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "12038:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2553, "indexExpression": {"argumentTypes": null, "hexValue": "30", "id": 2552, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12048:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12038:12:30", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes1", "typeString": "bytes1"}], "id": 2550, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "12032:5:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}, "id": 2554, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12032:19:30", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "VariableDeclarationStatement", "src": "12022:29:30"}, {"assignments": [2557], "declarations": [{"constant": false, "id": 2557, "name": "r", "nodeType": "VariableDeclaration", "scope": 2591, "src": "12065:9:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2556, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12065:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 2562, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "31", "id": 2560, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12099:1:30", "subdenomination": null, "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"}], "expression": {"argumentTypes": null, "id": 2558, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "12077:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "readBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 9714, "src": "12077:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)"}}, "id": 2561, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12077:24:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "12065:36:30"}, {"assignments": [2564], "declarations": [{"constant": false, "id": 2564, "name": "s", "nodeType": "VariableDeclaration", "scope": 2591, "src": "12115:9:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2563, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12115:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 2569, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "3333", "id": 2567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12149:2:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_33_by_1", "typeString": "int_const 33"}, "value": "33"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_33_by_1", "typeString": "int_const 33"}], "expression": {"argumentTypes": null, "id": 2565, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "12127:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "readBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 9714, "src": "12127:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)"}}, "id": 2568, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12127:25:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "12115:37:30"}, {"assignments": [2571], "declarations": [{"constant": false, "id": 2571, "name": "recovered", "nodeType": "VariableDeclaration", "scope": 2591, "src": "12166:17:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2570, "name": "address", "nodeType": "ElementaryTypeName", "src": "12166:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 2584, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332", "id": 2576, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12261:34:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\""}, "value": "\u0019Ethereum Signed Message:\n32"}, {"argumentTypes": null, "id": 2577, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2424, "src": "12317:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\""}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 2574, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "12223:3:30", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 2575, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12223:16:30", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 2578, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12223:116:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2573, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12085, "src": "12213:9:30", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2579, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12213:127:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2580, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2549, "src": "12358:1:30", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, {"argumentTypes": null, "id": 2581, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2557, "src": "12377:1:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2582, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2564, "src": "12396:1:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint8", "typeString": "uint8"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2572, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12083, "src": "12186:9:30", "typeDescriptions": {"typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}}, "id": 2583, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12186:225:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "12166:245:30"}, {"expression": {"argumentTypes": null, "id": 2589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2585, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2431, "src": "12425:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2586, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2426, "src": "12435:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "id": 2587, "name": "recovered", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2571, "src": "12452:9:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "12435:26:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "12425:36:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2590, "nodeType": "ExpressionStatement", "src": "12425:36:30"}]}}, "id": 2623, "nodeType": "IfStatement", "src": "10893:2101:30", "trueBody": {"id": 2523, "nodeType": "Block", "src": "10936:701:30", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2469, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2466, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "10954:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2467, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10954:16:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "hexValue": "3636", "id": 2468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10974:2:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66"}, "value": "66"}, "src": "10954:22:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2485, "nodeType": "IfStatement", "src": "10950:308:30", "trueBody": {"id": 2484, "nodeType": "Block", "src": "10978:280:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2475, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "11076:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2476, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "11076:41:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 2477, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_LENGTH", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11076:56:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 2478, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2424, "src": "11154:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2479, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2426, "src": "11180:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2480, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "11215:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2473, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "11018:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2474, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9013, "src": "11018:36:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_SignatureErrorCodes_$8760_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.SignatureErrorCodes,bytes32,address,bytes memory) pure returns (bytes memory)"}}, "id": 2481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11018:224:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2470, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "10996:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "10996:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2482, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10996:247:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2483, "nodeType": "ExpressionStatement", "src": "10996:247:30"}]}}, {"assignments": [2487], "declarations": [{"constant": false, "id": 2487, "name": "v", "nodeType": "VariableDeclaration", "scope": 2523, "src": "11271:7:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2486, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "11271:5:30", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": null, "visibility": "internal"}], "id": 2493, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 2489, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "11287:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2491, "indexExpression": {"argumentTypes": null, "hexValue": "30", "id": 2490, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11297:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11287:12:30", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes1", "typeString": "bytes1"}], "id": 2488, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11281:5:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}, "id": 2492, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11281:19:30", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "VariableDeclarationStatement", "src": "11271:29:30"}, {"assignments": [2495], "declarations": [{"constant": false, "id": 2495, "name": "r", "nodeType": "VariableDeclaration", "scope": 2523, "src": "11314:9:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2494, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11314:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 2500, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "31", "id": 2498, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11348:1:30", "subdenomination": null, "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"}], "expression": {"argumentTypes": null, "id": 2496, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "11326:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2497, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "readBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 9714, "src": "11326:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)"}}, "id": 2499, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11326:24:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "11314:36:30"}, {"assignments": [2502], "declarations": [{"constant": false, "id": 2502, "name": "s", "nodeType": "VariableDeclaration", "scope": 2523, "src": "11364:9:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2501, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11364:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 2507, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "3333", "id": 2505, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11398:2:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_33_by_1", "typeString": "int_const 33"}, "value": "33"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_33_by_1", "typeString": "int_const 33"}], "expression": {"argumentTypes": null, "id": 2503, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "11376:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "readBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 9714, "src": "11376:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)"}}, "id": 2506, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11376:25:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "11364:37:30"}, {"assignments": [2509], "declarations": [{"constant": false, "id": 2509, "name": "recovered", "nodeType": "VariableDeclaration", "scope": 2523, "src": "11415:17:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2508, "name": "address", "nodeType": "ElementaryTypeName", "src": "11415:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 2516, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2511, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2424, "src": "11462:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2512, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2487, "src": "11484:1:30", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, {"argumentTypes": null, "id": 2513, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2495, "src": "11503:1:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2514, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2502, "src": "11522:1:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint8", "typeString": "uint8"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2510, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12083, "src": "11435:9:30", "typeDescriptions": {"typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}}, "id": 2515, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11435:102:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "11415:122:30"}, {"expression": {"argumentTypes": null, "id": 2521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2517, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2431, "src": "11551:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2518, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2426, "src": "11561:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "id": 2519, "name": "recovered", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2509, "src": "11578:9:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11561:26:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "11551:36:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2522, "nodeType": "ExpressionStatement", "src": "11551:36:30"}]}}, "id": 2624, "nodeType": "IfStatement", "src": "10448:2546:30", "trueBody": {"id": 2461, "nodeType": "Block", "src": "10492:395:30", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2440, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2437, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "10510:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10510:16:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "hexValue": "31", "id": 2439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10530:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "10510:21:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2456, "nodeType": "IfStatement", "src": "10506:307:30", "trueBody": {"id": 2455, "nodeType": "Block", "src": "10533:280:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2446, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "10631:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "10631:41:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 2448, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_LENGTH", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10631:56:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 2449, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2424, "src": "10709:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2450, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2426, "src": "10735:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2451, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, "src": "10770:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2444, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "10573:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9013, "src": "10573:36:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_SignatureErrorCodes_$8760_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.SignatureErrorCodes,bytes32,address,bytes memory) pure returns (bytes memory)"}}, "id": 2452, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10573:224:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2441, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "10551:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2443, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "10551:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2453, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10551:247:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2454, "nodeType": "ExpressionStatement", "src": "10551:247:30"}]}}, {"expression": {"argumentTypes": null, "id": 2459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2457, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2431, "src": "10826:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "66616c7365", "id": 2458, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "10836:5:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "10826:15:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2460, "nodeType": "ExpressionStatement", "src": "10826:15:30"}]}}, {"expression": {"argumentTypes": null, "id": 2625, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2431, "src": "13010:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2432, "id": 2626, "nodeType": "Return", "src": "13003:14:30"}]}, "documentation": "Validates a hash-only signature type\n (anything but `Validator` and `EIP1271Wallet`).", "id": 2628, "implemented": true, "kind": "function", "modifiers": [], "name": "_validateHashSignatureTypes", "nodeType": "FunctionDefinition", "parameters": {"id": 2429, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2422, "name": "signatureType", "nodeType": "VariableDeclaration", "scope": 2628, "src": "10012:27:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "typeName": {"contractScope": null, "id": 2421, "name": "SignatureType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7772, "src": "10012:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2424, "name": "hash", "nodeType": "VariableDeclaration", "scope": 2628, "src": "10049:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2423, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10049:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2426, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 2628, "src": "10071:21:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2425, "name": "address", "nodeType": "ElementaryTypeName", "src": "10071:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2428, "name": "signature", "nodeType": "VariableDeclaration", "scope": 2628, "src": "10102:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2427, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10102:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "10002:128:30"}, "returnParameters": {"id": 2432, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2431, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 2628, "src": "10177:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2430, "name": "bool", "nodeType": "ElementaryTypeName", "src": "10177:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "10176:14:30"}, "scope": 3070, "src": "9966:3058:30", "stateMutability": "view", "superFunction": null, "visibility": "private"}, {"body": {"id": 2670, "nodeType": "Block", "src": "13295:365:30", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2639, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2634, "src": "13309:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13309:16:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 2641, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13329:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "13309:21:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2658, "nodeType": "IfStatement", "src": "13305:279:30", "trueBody": {"id": 2657, "nodeType": "Block", "src": "13332:252:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2648, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "13422:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "13422:41:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 2650, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_LENGTH", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13422:56:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 2651, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2630, "src": "13496:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2652, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2632, "src": "13518:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2653, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2634, "src": "13549:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2646, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "13368:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9013, "src": "13368:36:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_SignatureErrorCodes_$8760_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.SignatureErrorCodes,bytes32,address,bytes memory) pure returns (bytes memory)"}}, "id": 2654, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13368:204:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2643, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "13346:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "13346:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2655, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13346:227:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2656, "nodeType": "ExpressionStatement", "src": "13346:227:30"}]}}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 2661, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2634, "src": "13620:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2666, "indexExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2662, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2634, "src": "13630:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13630:16:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"argumentTypes": null, "hexValue": "31", "id": 2664, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13649:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "13630:20:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13620:31:30", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes1", "typeString": "bytes1"}], "id": 2660, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "13614:5:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}, "id": 2667, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13614:38:30", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 2659, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "13600:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2668, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13600:53:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "functionReturnParameters": 2638, "id": 2669, "nodeType": "Return", "src": "13593:60:30"}]}, "documentation": "@dev Reads the `SignatureType` from a signature with minimal validation.", "id": 2671, "implemented": true, "kind": "function", "modifiers": [], "name": "_readSignatureType", "nodeType": "FunctionDefinition", "parameters": {"id": 2635, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2630, "name": "hash", "nodeType": "VariableDeclaration", "scope": 2671, "src": "13148:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2629, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13148:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2632, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 2671, "src": "13170:21:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2631, "name": "address", "nodeType": "ElementaryTypeName", "src": "13170:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2634, "name": "signature", "nodeType": "VariableDeclaration", "scope": 2671, "src": "13201:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2633, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13201:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "13138:91:30"}, "returnParameters": {"id": 2638, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2637, "name": "", "nodeType": "VariableDeclaration", "scope": 2671, "src": "13276:13:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "typeName": {"contractScope": null, "id": 2636, "name": "SignatureType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7772, "src": "13276:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "value": null, "visibility": "internal"}], "src": "13275:15:30"}, "scope": 3070, "src": "13111:549:30", "stateMutability": "pure", "superFunction": null, "visibility": "private"}, {"body": {"id": 2757, "nodeType": "Block", "src": "13954:1569:30", "statements": [{"expression": {"argumentTypes": null, "id": 2688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2682, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2680, "src": "14017:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2684, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2673, "src": "14065:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2685, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2675, "src": "14083:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2686, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2677, "src": "14110:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2683, "name": "_readSignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2671, "src": "14033:18:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_enum$_SignatureType_$7772_$", "typeString": "function (bytes32,address,bytes memory) pure returns (enum ISignatureValidator.SignatureType)"}}, "id": 2687, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14033:96:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "14017:112:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "id": 2689, "nodeType": "ExpressionStatement", "src": "14017:112:30"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2690, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2675, "src": "14222:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 2692, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14247:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 2691, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "14239:7:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 2693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14239:10:30", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "14222:27:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2710, "nodeType": "IfStatement", "src": "14218:285:30", "trueBody": {"id": 2709, "nodeType": "Block", "src": "14251:252:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2700, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "14341:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2701, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "14341:41:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 2702, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_SIGNER", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14341:56:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 2703, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2673, "src": "14415:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2704, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2675, "src": "14437:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2705, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2677, "src": "14468:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2698, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "14287:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2699, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9013, "src": "14287:36:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_SignatureErrorCodes_$8760_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.SignatureErrorCodes,bytes32,address,bytes memory) pure returns (bytes memory)"}}, "id": 2706, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14287:204:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2695, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "14265:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "14265:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2707, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14265:227:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2708, "nodeType": "ExpressionStatement", "src": "14265:227:30"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 2718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2712, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2680, "src": "14564:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}], "id": 2711, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "14558:5:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}, "id": 2713, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14558:20:30", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2715, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "14588:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2716, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "NSignatureTypes", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14588:29:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}], "id": 2714, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "14582:5:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}, "id": 2717, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14582:36:30", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "14558:60:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2734, "nodeType": "IfStatement", "src": "14554:315:30", "trueBody": {"id": 2733, "nodeType": "Block", "src": "14620:249:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2724, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "14710:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "14710:41:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 2726, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "UNSUPPORTED", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14710:53:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 2727, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2673, "src": "14781:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2728, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2675, "src": "14803:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2729, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2677, "src": "14834:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2722, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "14656:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9013, "src": "14656:36:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_SignatureErrorCodes_$8760_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.SignatureErrorCodes,bytes32,address,bytes memory) pure returns (bytes memory)"}}, "id": 2730, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14656:201:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2719, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "14634:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2721, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "14634:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2731, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14634:224:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2732, "nodeType": "ExpressionStatement", "src": "14634:224:30"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "id": 2738, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2735, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2680, "src": "15201:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2736, "name": "SignatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7772, "src": "15218:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureType_$7772_$", "typeString": "type(enum ISignatureValidator.SignatureType)"}}, "id": 2737, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Illegal", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15218:21:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "src": "15201:38:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2754, "nodeType": "IfStatement", "src": "15197:289:30", "trueBody": {"id": 2753, "nodeType": "Block", "src": "15241:245:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2744, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "15331:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2745, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "15331:41:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 2746, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ILLEGAL", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15331:49:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 2747, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2673, "src": "15398:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2748, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2675, "src": "15420:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2749, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2677, "src": "15451:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2742, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "15277:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2743, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9013, "src": "15277:36:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_SignatureErrorCodes_$8760_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.SignatureErrorCodes,bytes32,address,bytes memory) pure returns (bytes memory)"}}, "id": 2750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15277:197:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2739, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "15255:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2741, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "15255:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2751, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15255:220:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2752, "nodeType": "ExpressionStatement", "src": "15255:220:30"}]}}, {"expression": {"argumentTypes": null, "id": 2755, "name": "signatureType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2680, "src": "15503:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "functionReturnParameters": 2681, "id": 2756, "nodeType": "Return", "src": "15496:20:30"}]}, "documentation": "@dev Reads the `SignatureType` from the end of a signature and validates it.", "id": 2758, "implemented": true, "kind": "function", "modifiers": [], "name": "_readValidSignatureType", "nodeType": "FunctionDefinition", "parameters": {"id": 2678, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2673, "name": "hash", "nodeType": "VariableDeclaration", "scope": 2758, "src": "13793:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2672, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13793:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2675, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 2758, "src": "13815:21:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2674, "name": "address", "nodeType": "ElementaryTypeName", "src": "13815:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2677, "name": "signature", "nodeType": "VariableDeclaration", "scope": 2758, "src": "13846:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2676, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13846:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "13783:91:30"}, "returnParameters": {"id": 2681, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2680, "name": "signatureType", "nodeType": "VariableDeclaration", "scope": 2758, "src": "13921:27:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}, "typeName": {"contractScope": null, "id": 2679, "name": "SignatureType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7772, "src": "13921:13:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureType_$7772", "typeString": "enum ISignatureValidator.SignatureType"}}, "value": null, "visibility": "internal"}], "src": "13920:29:30"}, "scope": 3070, "src": "13751:1772:30", "stateMutability": "pure", "superFunction": null, "visibility": "private"}, {"body": {"id": 2780, "nodeType": "Block", "src": "15848:159:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 2771, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15922:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 2770, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "15914:7:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 2772, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15914:10:30", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}], "id": 2769, "name": "IEIP1271Data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7527, "src": "15901:12:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IEIP1271Data_$7527_$", "typeString": "type(contract IEIP1271Data)"}}, "id": 2773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15901:24:30", "typeDescriptions": {"typeIdentifier": "t_contract$_IEIP1271Data_$7527", "typeString": "contract IEIP1271Data"}}, "id": 2774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderWithHash", "nodeType": "MemberAccess", "referencedDeclaration": 7519, "src": "15901:38:30", "typeDescriptions": {"typeIdentifier": "t_function_external_pure$_t_struct$_Order_$10963_memory_ptr_$_t_bytes32_$returns$__$", "typeString": "function (struct LibOrder.Order memory,bytes32) pure external"}}, "id": 2775, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "selector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15901:47:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 2776, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2760, "src": "15962:5:30", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 2777, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2762, "src": "15981:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 2767, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "15865:3:30", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 2768, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15865:22:30", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 2778, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15865:135:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2766, "id": 2779, "nodeType": "Return", "src": "15858:142:30"}]}, "documentation": "@dev ABI encodes an order and hash with a selector to be passed into\n an EIP1271 compliant `isValidSignature` function.", "id": 2781, "implemented": true, "kind": "function", "modifiers": [], "name": "_encodeEIP1271OrderWithHash", "nodeType": "FunctionDefinition", "parameters": {"id": 2763, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2760, "name": "order", "nodeType": "VariableDeclaration", "scope": 2781, "src": "15715:27:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 2759, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "15715:14:30", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2762, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 2781, "src": "15752:17:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2761, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15752:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "15705:70:30"}, "returnParameters": {"id": 2766, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2765, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 2781, "src": "15822:20:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2764, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "15822:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "15821:22:30"}, "scope": 3070, "src": "15669:338:30", "stateMutability": "pure", "superFunction": null, "visibility": "private"}, {"body": {"id": 2803, "nodeType": "Block", "src": "16379:183:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 2794, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "16453:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 2793, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "16445:7:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 2795, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16445:10:30", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}], "id": 2792, "name": "IEIP1271Data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7527, "src": "16432:12:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IEIP1271Data_$7527_$", "typeString": "type(contract IEIP1271Data)"}}, "id": 2796, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16432:24:30", "typeDescriptions": {"typeIdentifier": "t_contract$_IEIP1271Data_$7527", "typeString": "contract IEIP1271Data"}}, "id": 2797, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ZeroExTransactionWithHash", "nodeType": "MemberAccess", "referencedDeclaration": 7526, "src": "16432:50:30", "typeDescriptions": {"typeIdentifier": "t_function_external_pure$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$_t_bytes32_$returns$__$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory,bytes32) pure external"}}, "id": 2798, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "selector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "16432:59:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 2799, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2783, "src": "16505:11:30", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, {"argumentTypes": null, "id": 2800, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2785, "src": "16530:15:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 2790, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "16396:3:30", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 2791, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "16396:22:30", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 2801, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16396:159:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2789, "id": 2802, "nodeType": "Return", "src": "16389:166:30"}]}, "documentation": "@dev ABI encodes a transaction and hash with a selector to be passed into\n an EIP1271 compliant `isValidSignature` function.", "id": 2804, "implemented": true, "kind": "function", "modifiers": [], "name": "_encodeEIP1271TransactionWithHash", "nodeType": "FunctionDefinition", "parameters": {"id": 2786, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2783, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 2804, "src": "16210:57:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 2782, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "16210:38:30", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2785, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 2804, "src": "16277:23:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2784, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "16277:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "16200:106:30"}, "returnParameters": {"id": 2789, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2788, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 2804, "src": "16353:20:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2787, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "16353:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "16352:22:30"}, "scope": 3070, "src": "16158:404:30", "stateMutability": "pure", "superFunction": null, "visibility": "private"}, {"body": {"id": 2885, "nodeType": "Block", "src": "17163:1091:30", "statements": [{"assignments": [2816], "declarations": [{"constant": false, "id": 2816, "name": "signatureLength", "nodeType": "VariableDeclaration", "scope": 2885, "src": "17211:23:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2815, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "17211:7:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 2819, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2817, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "17237:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "17237:16:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "17211:42:30"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2823, "name": "signatureLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2816, "src": "17356:15:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"argumentTypes": null, "hexValue": "31", "id": 2824, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17374:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "17356:19:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 2820, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "17334:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2822, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "writeLength", "nodeType": "MemberAccess", "referencedDeclaration": 9842, "src": "17334:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure"}}, "id": 2826, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17334:42:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2827, "nodeType": "ExpressionStatement", "src": "17334:42:30"}, {"assignments": [2829], "declarations": [{"constant": false, "id": 2829, "name": "callData", "nodeType": "VariableDeclaration", "scope": 2885, "src": "17419:21:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2828, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "17419:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 2842, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 2834, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17495:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 2833, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "17487:7:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 2835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17487:10:30", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}], "id": 2832, "name": "IWallet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7912, "src": "17479:7:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IWallet_$7912_$", "typeString": "type(contract IWallet)"}}, "id": 2836, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17479:19:30", "typeDescriptions": {"typeIdentifier": "t_contract$_IWallet_$7912", "typeString": "contract IWallet"}}, "id": 2837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isValidSignature", "nodeType": "MemberAccess", "referencedDeclaration": 7911, "src": "17479:36:30", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function (bytes32,bytes memory) view external returns (bytes4)"}}, "id": 2838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "selector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "17479:45:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 2839, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2806, "src": "17538:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2840, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "17556:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2830, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "17443:3:30", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 2831, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "17443:22:30", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 2841, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17443:132:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "17419:156:30"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2846, "name": "signatureLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2816, "src": "17656:15:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 2843, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "17634:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "writeLength", "nodeType": "MemberAccess", "referencedDeclaration": 9842, "src": "17634:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure"}}, "id": 2847, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17634:38:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2848, "nodeType": "ExpressionStatement", "src": "17634:38:30"}, {"assignments": [2850, 2852], "declarations": [{"constant": false, "id": 2850, "name": "didSucceed", "nodeType": "VariableDeclaration", "scope": 2885, "src": "17733:15:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2849, "name": "bool", "nodeType": "ElementaryTypeName", "src": "17733:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2852, "name": "returnData", "nodeType": "VariableDeclaration", "scope": 2885, "src": "17750:23:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2851, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "17750:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 2857, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2855, "name": "callData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2829, "src": "17802:8:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2853, "name": "walletAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2808, "src": "17777:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "staticcall", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "17777:24:30", "typeDescriptions": {"typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) view returns (bool,bytes memory)"}}, "id": 2856, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17777:34:30", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "17732:79:30"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2863, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2858, "name": "didSucceed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2850, "src": "17900:10:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2862, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2859, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2852, "src": "17914:10:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2860, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "17914:17:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 2861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17935:2:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "17914:23:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "17900:37:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2872, "nodeType": "IfStatement", "src": "17896:128:30", "trueBody": {"id": 2871, "nodeType": "Block", "src": "17939:85:30", "statements": [{"expression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 2869, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 2866, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17982:1:30", "subdenomination": null, "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": {"argumentTypes": null, "id": 2864, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2852, "src": "17960:10:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "readBytes4", "nodeType": "MemberAccess", "referencedDeclaration": 9833, "src": "17960:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes4_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes4)"}}, "id": 2867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17960:24:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "id": 2868, "name": "LEGACY_WALLET_MAGIC_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2104, "src": "17988:25:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "17960:53:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2814, "id": 2870, "nodeType": "Return", "src": "17953:60:30"}]}}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2878, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2806, "src": "18158:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2879, "name": "walletAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2808, "src": "18176:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2880, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "18203:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 2881, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2852, "src": "18226:10:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2876, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "18102:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2877, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureWalletError", "nodeType": "MemberAccess", "referencedDeclaration": 9076, "src": "18102:42:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes32,address,bytes memory,bytes memory) pure returns (bytes memory)"}}, "id": 2882, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18102:144:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2873, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "18080:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2875, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "18080:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2883, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18080:167:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2884, "nodeType": "ExpressionStatement", "src": "18080:167:30"}]}, "documentation": "@dev Verifies a hash and signature using logic defined by Wallet contract.\n @param hash Any 32 byte hash.\n @param walletAddress Address that should have signed the given hash\n and defines its own signature verification method.\n @param signature Proof that the hash has been signed by signer.\n @return True if the signature is validated by the Wallet.", "id": 2886, "implemented": true, "kind": "function", "modifiers": [], "name": "_validateHashWithWallet", "nodeType": "FunctionDefinition", "parameters": {"id": 2811, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2806, "name": "hash", "nodeType": "VariableDeclaration", "scope": 2886, "src": "17025:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2805, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "17025:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2808, "name": "walletAddress", "nodeType": "VariableDeclaration", "scope": 2886, "src": "17047:21:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2807, "name": "address", "nodeType": "ElementaryTypeName", "src": "17047:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2810, "name": "signature", "nodeType": "VariableDeclaration", "scope": 2886, "src": "17078:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2809, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "17078:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "17015:91:30"}, "returnParameters": {"id": 2814, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2813, "name": "", "nodeType": "VariableDeclaration", "scope": 2886, "src": "17153:4:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2812, "name": "bool", "nodeType": "ElementaryTypeName", "src": "17153:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "17152:6:30"}, "scope": 3070, "src": "16983:1271:30", "stateMutability": "view", "superFunction": null, "visibility": "private"}, {"body": {"id": 2908, "nodeType": "Block", "src": "18873:285:30", "statements": [{"expression": {"argumentTypes": null, "id": 2904, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2897, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2895, "src": "18883:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2899, "name": "walletAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2890, "src": "18957:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2900, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2888, "src": "18984:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 2901, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2892, "src": "19002:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "hexValue": "31", "id": 2902, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "19025:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 2898, "name": "_staticCallEIP1271WalletWithReducedSignatureLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3069, "src": "18893:50:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,bytes memory,uint256) view returns (bool)"}}, "id": 2903, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18893:234:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "18883:244:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2905, "nodeType": "ExpressionStatement", "src": "18883:244:30"}, {"expression": {"argumentTypes": null, "id": 2906, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2895, "src": "19144:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2896, "id": 2907, "nodeType": "Return", "src": "19137:14:30"}]}, "documentation": "@dev Verifies arbitrary data and a signature via an EIP1271 Wallet\n contract, where the wallet address is also the signer address.\n @param data Arbitrary signed data.\n @param walletAddress Contract that will verify the data and signature.\n @param signature Proof that the data has been signed by signer.\n @return isValid True if the signature is validated by the Wallet.", "id": 2909, "implemented": true, "kind": "function", "modifiers": [], "name": "_validateBytesWithWallet", "nodeType": "FunctionDefinition", "parameters": {"id": 2893, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2888, "name": "data", "nodeType": "VariableDeclaration", "scope": 2909, "src": "18722:17:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2887, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "18722:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2890, "name": "walletAddress", "nodeType": "VariableDeclaration", "scope": 2909, "src": "18749:21:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2889, "name": "address", "nodeType": "ElementaryTypeName", "src": "18749:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2892, "name": "signature", "nodeType": "VariableDeclaration", "scope": 2909, "src": "18780:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2891, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "18780:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "18712:96:30"}, "returnParameters": {"id": 2896, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2895, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 2909, "src": "18855:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2894, "name": "bool", "nodeType": "ElementaryTypeName", "src": "18855:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "18854:14:30"}, "scope": 3070, "src": "18679:479:30", "stateMutability": "view", "superFunction": null, "visibility": "private"}, {"body": {"id": 2984, "nodeType": "Block", "src": "19849:1176:30", "statements": [{"assignments": [2923], "declarations": [{"constant": false, "id": 2923, "name": "signatureLength", "nodeType": "VariableDeclaration", "scope": 2984, "src": "19859:23:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2922, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19859:7:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 2926, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2924, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2917, "src": "19885:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2925, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "19885:16:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "19859:42:30"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2929, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2927, "name": "signatureLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2923, "src": "19915:15:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "hexValue": "3231", "id": 2928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "19933:2:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_21_by_1", "typeString": "int_const 21"}, "value": "21"}, "src": "19915:20:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2945, "nodeType": "IfStatement", "src": "19911:278:30", "trueBody": {"id": 2944, "nodeType": "Block", "src": "19937:252:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 2935, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "20027:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "20027:41:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 2937, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INVALID_LENGTH", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "20027:56:30", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 2938, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2913, "src": "20101:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 2939, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2915, "src": "20123:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2940, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2917, "src": "20154:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2933, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "19973:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9013, "src": "19973:36:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_SignatureErrorCodes_$8760_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.SignatureErrorCodes,bytes32,address,bytes memory) pure returns (bytes memory)"}}, "id": 2941, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "19973:204:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2930, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "19951:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2932, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "19951:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2942, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "19951:227:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2943, "nodeType": "ExpressionStatement", "src": "19951:227:30"}]}}, {"assignments": [2947], "declarations": [{"constant": false, "id": 2947, "name": "validatorAddress", "nodeType": "VariableDeclaration", "scope": 2984, "src": "20344:24:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2946, "name": "address", "nodeType": "ElementaryTypeName", "src": "20344:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 2954, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2952, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 2950, "name": "signatureLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2923, "src": "20393:15:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"argumentTypes": null, "hexValue": "3231", "id": 2951, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "20411:2:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_21_by_1", "typeString": "int_const 21"}, "value": "21"}, "src": "20393:20:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 2948, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2917, "src": "20371:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2949, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "readAddress", "nodeType": "MemberAccess", "referencedDeclaration": 9634, "src": "20371:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)"}}, "id": 2953, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "20371:43:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "20344:70:30"}, {"condition": {"argumentTypes": null, "id": 2960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "20477:51:30", "subExpression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 2955, "name": "allowedValidators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2116, "src": "20478:17:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 2957, "indexExpression": {"argumentTypes": null, "id": 2956, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2915, "src": "20496:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "20478:32:30", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 2959, "indexExpression": {"argumentTypes": null, "id": 2958, "name": "validatorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2947, "src": "20511:16:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "20478:50:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 2972, "nodeType": "IfStatement", "src": "20473:240:30", "trueBody": {"id": 2971, "nodeType": "Block", "src": "20530:183:30", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2966, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2915, "src": "20640:13:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2967, "name": "validatorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2947, "src": "20671:16:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 2964, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "20566:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 2965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureValidatorNotApprovedError", "nodeType": "MemberAccess", "referencedDeclaration": 9030, "src": "20566:56:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,address) pure returns (bytes memory)"}}, "id": 2968, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "20566:135:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 2961, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "20544:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 2963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "20544:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 2969, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "20544:158:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2970, "nodeType": "ExpressionStatement", "src": "20544:158:30"}]}}, {"expression": {"argumentTypes": null, "id": 2980, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 2973, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2920, "src": "20722:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 2975, "name": "validatorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2947, "src": "20796:16:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 2976, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2911, "src": "20826:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 2977, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2917, "src": "20844:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "hexValue": "3231", "id": 2978, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "20867:2:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_21_by_1", "typeString": "int_const 21"}, "value": "21"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_rational_21_by_1", "typeString": "int_const 21"}], "id": 2974, "name": "_staticCallEIP1271WalletWithReducedSignatureLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3069, "src": "20732:50:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,bytes memory,uint256) view returns (bool)"}}, "id": 2979, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "20732:262:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "20722:272:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2981, "nodeType": "ExpressionStatement", "src": "20722:272:30"}, {"expression": {"argumentTypes": null, "id": 2982, "name": "isValid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2920, "src": "21011:7:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2921, "id": 2983, "nodeType": "Return", "src": "21004:14:30"}]}, "documentation": "@dev Verifies arbitrary data and a signature via an EIP1271 contract\n whose address is encoded in the signature.\n @param data Arbitrary signed data.\n @param hash The hash associated with the data.\n @param signerAddress Address that should have signed the given hash.\n @param signature Proof that the data has been signed by signer.\n @return isValid True if the signature is validated by the validator contract.", "id": 2985, "implemented": true, "kind": "function", "modifiers": [], "name": "_validateBytesWithValidator", "nodeType": "FunctionDefinition", "parameters": {"id": 2918, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2911, "name": "data", "nodeType": "VariableDeclaration", "scope": 2985, "src": "19676:17:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2910, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "19676:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2913, "name": "hash", "nodeType": "VariableDeclaration", "scope": 2985, "src": "19703:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2912, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "19703:7:30", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2915, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 2985, "src": "19725:21:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2914, "name": "address", "nodeType": "ElementaryTypeName", "src": "19725:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2917, "name": "signature", "nodeType": "VariableDeclaration", "scope": 2985, "src": "19756:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2916, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "19756:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "19666:118:30"}, "returnParameters": {"id": 2921, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2920, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 2985, "src": "19831:12:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2919, "name": "bool", "nodeType": "ElementaryTypeName", "src": "19831:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "19830:14:30"}, "scope": 3070, "src": "19630:1395:30", "stateMutability": "view", "superFunction": null, "visibility": "private"}, {"body": {"id": 3068, "nodeType": "Block", "src": "21890:1088:30", "statements": [{"assignments": [2999], "declarations": [{"constant": false, "id": 2999, "name": "signatureLength", "nodeType": "VariableDeclaration", "scope": 3068, "src": "21942:23:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2998, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21942:7:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3002, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3000, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2991, "src": "21968:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3001, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "21968:16:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "21942:42:30"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3006, "name": "signatureLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2999, "src": "22071:15:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"argumentTypes": null, "id": 3007, "name": "ignoredSignatureBytesLen", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2993, "src": "22089:24:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "22071:42:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 3003, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2991, "src": "22049:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3005, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "writeLength", "nodeType": "MemberAccess", "referencedDeclaration": 9842, "src": "22049:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure"}}, "id": 3009, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22049:65:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3010, "nodeType": "ExpressionStatement", "src": "22049:65:30"}, {"assignments": [3012], "declarations": [{"constant": false, "id": 3012, "name": "callData", "nodeType": "VariableDeclaration", "scope": 3068, "src": "22124:21:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3011, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "22124:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 3025, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 3017, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "22207:1:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 3016, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "22199:7:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 3018, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22199:10:30", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}], "id": 3015, "name": "IEIP1271Wallet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7542, "src": "22184:14:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IEIP1271Wallet_$7542_$", "typeString": "type(contract IEIP1271Wallet)"}}, "id": 3019, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22184:26:30", "typeDescriptions": {"typeIdentifier": "t_contract$_IEIP1271Wallet_$7542", "typeString": "contract IEIP1271Wallet"}}, "id": 3020, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isValidSignature", "nodeType": "MemberAccess", "referencedDeclaration": 7541, "src": "22184:43:30", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function (bytes memory,bytes memory) view external returns (bytes4)"}}, "id": 3021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "selector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "22184:52:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 3022, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2989, "src": "22250:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 3023, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2991, "src": "22268:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3013, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "22148:3:30", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 3014, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "22148:22:30", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 3024, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22148:139:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "22124:163:30"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3029, "name": "signatureLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2999, "src": "22364:15:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 3026, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2991, "src": "22342:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3028, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "writeLength", "nodeType": "MemberAccess", "referencedDeclaration": 9842, "src": "22342:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure"}}, "id": 3030, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22342:38:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3031, "nodeType": "ExpressionStatement", "src": "22342:38:30"}, {"assignments": [3033, 3035], "declarations": [{"constant": false, "id": 3033, "name": "didSucceed", "nodeType": "VariableDeclaration", "scope": 3068, "src": "22440:15:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3032, "name": "bool", "nodeType": "ElementaryTypeName", "src": "22440:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3035, "name": "returnData", "nodeType": "VariableDeclaration", "scope": 3068, "src": "22457:23:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3034, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "22457:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 3040, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3038, "name": "callData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3012, "src": "22520:8:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3036, "name": "verifyingContractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2987, "src": "22484:24:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "staticcall", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "22484:35:30", "typeDescriptions": {"typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) view returns (bool,bytes memory)"}}, "id": 3039, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22484:45:30", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "22439:90:30"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 3046, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3041, "name": "didSucceed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3033, "src": "22618:10:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3045, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3042, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3035, "src": "22632:10:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "22632:17:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 3044, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "22653:2:30", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "22632:23:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "22618:37:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3055, "nodeType": "IfStatement", "src": "22614:122:30", "trueBody": {"id": 3054, "nodeType": "Block", "src": "22657:79:30", "statements": [{"expression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 3052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 3049, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "22700:1:30", "subdenomination": null, "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": {"argumentTypes": null, "id": 3047, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3035, "src": "22678:10:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3048, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "readBytes4", "nodeType": "MemberAccess", "referencedDeclaration": 9833, "src": "22678:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes4_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes4)"}}, "id": 3050, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22678:24:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "id": 3051, "name": "EIP1271_MAGIC_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11599, "src": "22706:19:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "22678:47:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2997, "id": 3053, "nodeType": "Return", "src": "22671:54:30"}]}}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3061, "name": "verifyingContractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2987, "src": "22871:24:30", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 3062, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2989, "src": "22909:4:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 3063, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2991, "src": "22927:9:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 3064, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3035, "src": "22950:10:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3059, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "22814:21:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "EIP1271SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9053, "src": "22814:43:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,bytes memory,bytes memory) pure returns (bytes memory)"}}, "id": 3065, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22814:156:30", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3056, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "22792:13:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 3058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "22792:21:30", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 3066, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "22792:179:30", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3067, "nodeType": "ExpressionStatement", "src": "22792:179:30"}]}, "documentation": "@dev Performs a staticcall to an EIP1271 compiant `isValidSignature` function and validates the output.\n @param verifyingContractAddress Address of EIP1271Wallet or Validator contract.\n @param data Arbitrary signed data.\n @param signature Proof that the hash has been signed by signer. Bytes will be temporarily be popped\n off of the signature before calling `isValidSignature`.\n @param ignoredSignatureBytesLen The amount of bytes that will be temporarily popped off the the signature.\n @return The validity of the signature.", "id": 3069, "implemented": true, "kind": "function", "modifiers": [], "name": "_staticCallEIP1271WalletWithReducedSignatureLength", "nodeType": "FunctionDefinition", "parameters": {"id": 2994, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2987, "name": "verifyingContractAddress", "nodeType": "VariableDeclaration", "scope": 3069, "src": "21694:32:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2986, "name": "address", "nodeType": "ElementaryTypeName", "src": "21694:7:30", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2989, "name": "data", "nodeType": "VariableDeclaration", "scope": 3069, "src": "21736:17:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2988, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "21736:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2991, "name": "signature", "nodeType": "VariableDeclaration", "scope": 3069, "src": "21763:22:30", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2990, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "21763:5:30", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 2993, "name": "ignoredSignatureBytesLen", "nodeType": "VariableDeclaration", "scope": 3069, "src": "21795:32:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2992, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21795:7:30", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "21684:149:30"}, "returnParameters": {"id": 2997, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2996, "name": "", "nodeType": "VariableDeclaration", "scope": 3069, "src": "21880:4:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2995, "name": "bool", "nodeType": "ElementaryTypeName", "src": "21880:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "21879:6:30"}, "scope": 3070, "src": "21625:1353:30", "stateMutability": "view", "superFunction": null, "visibility": "private"}], "scope": 3071, "src": "1317:21663:30"}], "src": "580:22401:30"}, "id": 30}, "contracts/exchange/MixinTransactions.sol": {"ast": {"absolutePath": "contracts/exchange/MixinTransactions.sol", "exportedSymbols": {"MixinTransactions": [3412]}, "id": 3413, "nodeType": "SourceUnit", "nodes": [{"id": 3072, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:31"}, {"id": 3073, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:31"}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "id": 3074, "nodeType": "ImportDirective", "scope": 3413, "sourceUnit": 11595, "src": "639:76:31", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol", "id": 3075, "nodeType": "ImportDirective", "scope": 3413, "sourceUnit": 8732, "src": "716:79:31", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "id": 3076, "nodeType": "ImportDirective", "scope": 3413, "sourceUnit": 9343, "src": "796:77:31", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "@0x/contracts-utils/contracts/src/LibRichErrors.sol", "id": 3077, "nodeType": "ImportDirective", "scope": 3413, "sourceUnit": 9873, "src": "874:61:31", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/Refundable.sol", "file": "@0x/contracts-utils/contracts/src/Refundable.sol", "id": 3078, "nodeType": "ImportDirective", "scope": 3413, "sourceUnit": 11324, "src": "936:58:31", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/ITransactions.sol", "file": "./interfaces/ITransactions.sol", "id": 3079, "nodeType": "ImportDirective", "scope": 3413, "sourceUnit": 7880, "src": "995:40:31", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/ISignatureValidator.sol", "file": "./interfaces/ISignatureValidator.sol", "id": 3080, "nodeType": "ImportDirective", "scope": 3413, "sourceUnit": 7845, "src": "1036:46:31", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 3081, "name": "Refundable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11323, "src": "1119:10:31", "typeDescriptions": {"typeIdentifier": "t_contract$_Refundable_$11323", "typeString": "contract Refundable"}}, "id": 3082, "nodeType": "InheritanceSpecifier", "src": "1119:10:31"}, {"arguments": null, "baseName": {"contractScope": null, "id": 3083, "name": "LibEIP712ExchangeDomain", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8731, "src": "1135:23:31", "typeDescriptions": {"typeIdentifier": "t_contract$_LibEIP712ExchangeDomain_$8731", "typeString": "contract LibEIP712ExchangeDomain"}}, "id": 3084, "nodeType": "InheritanceSpecifier", "src": "1135:23:31"}, {"arguments": null, "baseName": {"contractScope": null, "id": 3085, "name": "ISignatureValidator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7844, "src": "1164:19:31", "typeDescriptions": {"typeIdentifier": "t_contract$_ISignatureValidator_$7844", "typeString": "contract ISignatureValidator"}}, "id": 3086, "nodeType": "InheritanceSpecifier", "src": "1164:19:31"}, {"arguments": null, "baseName": {"contractScope": null, "id": 3087, "name": "ITransactions", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7879, "src": "1189:13:31", "typeDescriptions": {"typeIdentifier": "t_contract$_ITransactions_$7879", "typeString": "contract ITransactions"}}, "id": 3088, "nodeType": "InheritanceSpecifier", "src": "1189:13:31"}], "contractDependencies": [7844, 7879, 8731, 11323, 11874], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 3412, "linearizedBaseContracts": [3412, 7879, 7844, 8731, 11323, 11874], "name": "MixinTransactions", "nodeType": "ContractDefinition", "nodes": [{"id": 3091, "libraryName": {"contractScope": null, "id": 3089, "name": "LibZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11594, "src": "1215:20:31", "typeDescriptions": {"typeIdentifier": "t_contract$_LibZeroExTransaction_$11594", "typeString": "library LibZeroExTransaction"}}, "nodeType": "UsingForDirective", "src": "1209:70:31", "typeName": {"contractScope": null, "id": 3090, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "1240:38:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}}, {"constant": false, "id": 3095, "name": "transactionsExecuted", "nodeType": "VariableDeclaration", "scope": 3412, "src": "1508:53:31", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)"}, "typeName": {"id": 3094, "keyType": {"id": 3092, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1517:7:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1508:25:31", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)"}, "valueType": {"id": 3093, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1528:4:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}}, "value": null, "visibility": "public"}, {"constant": false, "id": 3097, "name": "currentContextAddress", "nodeType": "VariableDeclaration", "scope": 3412, "src": "1695:36:31", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3096, "name": "address", "nodeType": "ElementaryTypeName", "src": "1695:7:31", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "public"}, {"body": {"id": 3113, "nodeType": "Block", "src": "2249:67:31", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3109, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3099, "src": "2286:11:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, {"argumentTypes": null, "id": 3110, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3101, "src": "2299:9:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 3108, "name": "_executeTransaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3247, "src": "2266:19:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory,bytes memory) returns (bytes memory)"}}, "id": 3111, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2266:43:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3107, "id": 3112, "nodeType": "Return", "src": "2259:50:31"}]}, "documentation": "@dev Executes an Exchange method call in the context of signer.\n @param transaction 0x transaction structure.\n @param signature Proof that transaction has been signed by signer.\n @return ABI encoded return data of the underlying Exchange function call.", "id": 3114, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 3104, "modifierName": {"argumentTypes": null, "id": 3103, "name": "disableRefundUntilEnd", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11259, "src": "2192:21:31", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "2192:21:31"}], "name": "executeTransaction", "nodeType": "FunctionDefinition", "parameters": {"id": 3102, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3099, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 3114, "src": "2057:57:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 3098, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "2057:38:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3101, "name": "signature", "nodeType": "VariableDeclaration", "scope": 3114, "src": "2124:22:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3100, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2124:5:31", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "2047:105:31"}, "returnParameters": {"id": 3107, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3106, "name": "", "nodeType": "VariableDeclaration", "scope": 3114, "src": "2231:12:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3105, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2231:5:31", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "2230:14:31"}, "scope": 3412, "src": "2020:296:31", "stateMutability": "payable", "superFunction": 7861, "visibility": "public"}, {"body": {"id": 3168, "nodeType": "Block", "src": "2935:261:31", "statements": [{"assignments": [3129], "declarations": [{"constant": false, "id": 3129, "name": "length", "nodeType": "VariableDeclaration", "scope": 3168, "src": "2945:14:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3128, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2945:7:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3132, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3130, "name": "transactions", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3117, "src": "2962:12:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_ZeroExTransaction_$11531_memory_$dyn_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory[] memory"}}, "id": 3131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2962:19:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2945:36:31"}, {"expression": {"argumentTypes": null, "id": 3139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 3133, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3126, "src": "2991:10:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3137, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3129, "src": "3016:6:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3136, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "3004:11:31", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_$dyn_memory_$", "typeString": "function (uint256) pure returns (bytes memory[] memory)"}, "typeName": {"baseType": {"id": 3134, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3008:5:31", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 3135, "length": null, "nodeType": "ArrayTypeName", "src": "3008:7:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}}, "id": 3138, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3004:19:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory", "typeString": "bytes memory[] memory"}}, "src": "2991:32:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 3140, "nodeType": "ExpressionStatement", "src": "2991:32:31"}, {"body": {"id": 3164, "nodeType": "Block", "src": "3071:92:31", "statements": [{"expression": {"argumentTypes": null, "id": 3162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3151, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3126, "src": "3085:10:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 3153, "indexExpression": {"argumentTypes": null, "id": 3152, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3142, "src": "3096:1:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3085:13:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3155, "name": "transactions", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3117, "src": "3121:12:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_ZeroExTransaction_$11531_memory_$dyn_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory[] memory"}}, "id": 3157, "indexExpression": {"argumentTypes": null, "id": 3156, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3142, "src": "3134:1:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3121:15:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3158, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3120, "src": "3138:10:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 3160, "indexExpression": {"argumentTypes": null, "id": 3159, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3142, "src": "3149:1:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3138:13:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}], "id": 3154, "name": "_executeTransaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3247, "src": "3101:19:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory,bytes memory) returns (bytes memory)"}}, "id": 3161, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3101:51:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "src": "3085:67:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "id": 3163, "nodeType": "ExpressionStatement", "src": "3085:67:31"}]}, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3145, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3142, "src": "3053:1:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 3146, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3129, "src": "3058:6:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3053:11:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3165, "initializationExpression": {"assignments": [3142], "declarations": [{"constant": false, "id": 3142, "name": "i", "nodeType": "VariableDeclaration", "scope": 3165, "src": "3038:9:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3141, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3038:7:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3144, "initialValue": {"argumentTypes": null, "hexValue": "30", "id": 3143, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3050:1:31", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "3038:13:31"}, "loopExpression": {"expression": {"argumentTypes": null, "id": 3149, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3066:3:31", "subExpression": {"argumentTypes": null, "id": 3148, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3142, "src": "3066:1:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3150, "nodeType": "ExpressionStatement", "src": "3066:3:31"}, "nodeType": "ForStatement", "src": "3033:130:31"}, {"expression": {"argumentTypes": null, "id": 3166, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3126, "src": "3179:10:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "functionReturnParameters": 3127, "id": 3167, "nodeType": "Return", "src": "3172:17:31"}]}, "documentation": "@dev Executes a batch of Exchange method calls in the context of signer(s).\n @param transactions Array of 0x transaction structures.\n @param signatures Array of proofs that transactions have been signed by signer(s).\n @return returnData Array containing ABI encoded return data for each of the underlying Exchange function calls.", "id": 3169, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 3123, "modifierName": {"argumentTypes": null, "id": 3122, "name": "disableRefundUntilEnd", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11259, "src": "2865:21:31", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "2865:21:31"}], "name": "batchExecuteTransactions", "nodeType": "FunctionDefinition", "parameters": {"id": 3121, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3117, "name": "transactions", "nodeType": "VariableDeclaration", "scope": 3169, "src": "2724:60:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_ZeroExTransaction_$11531_memory_$dyn_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3115, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "2724:38:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "id": 3116, "length": null, "nodeType": "ArrayTypeName", "src": "2724:40:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_ZeroExTransaction_$11531_storage_$dyn_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3120, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 3169, "src": "2794:25:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 3118, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2794:5:31", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 3119, "length": null, "nodeType": "ArrayTypeName", "src": "2794:7:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "2714:111:31"}, "returnParameters": {"id": 3127, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3126, "name": "returnData", "nodeType": "VariableDeclaration", "scope": 3169, "src": "2904:25:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 3124, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2904:5:31", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 3125, "length": null, "nodeType": "ArrayTypeName", "src": "2904:7:31", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "2903:27:31"}, "scope": 3412, "src": "2681:515:31", "stateMutability": "payable", "superFunction": 7873, "visibility": "public"}, {"body": {"id": 3246, "nodeType": "Block", "src": "3670:1015:31", "statements": [{"assignments": [3179], "declarations": [{"constant": false, "id": 3179, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 3246, "src": "3680:23:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3178, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3680:7:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 3184, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3182, "name": "EIP712_EXCHANGE_DOMAIN_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8699, "src": "3735:27:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 3180, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3171, "src": "3706:11:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 3181, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "getTypedDataHash", "nodeType": "MemberAccess", "referencedDeclaration": 11553, "src": "3706:28:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory,bytes32) pure returns (bytes32)"}}, "id": 3183, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3706:57:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "3680:83:31"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3186, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3171, "src": "3816:11:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, {"argumentTypes": null, "id": 3187, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3173, "src": "3841:9:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 3188, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3179, "src": "3864:15:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 3185, "name": "_assertExecutableTransaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3369, "src": "3774:28:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory,bytes memory,bytes32) view"}}, "id": 3189, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3774:115:31", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3190, "nodeType": "ExpressionStatement", "src": "3774:115:31"}, {"assignments": [3192], "declarations": [{"constant": false, "id": 3192, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 3246, "src": "3946:21:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3191, "name": "address", "nodeType": "ElementaryTypeName", "src": "3946:7:31", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 3195, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3193, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3171, "src": "3970:11:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 3194, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "signerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 11528, "src": "3970:25:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3946:49:31"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3197, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3192, "src": "4041:13:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 3198, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3192, "src": "4056:13:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 3196, "name": "_setCurrentContextAddressIfRequired", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3387, "src": "4005:35:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 3199, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4005:65:31", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3200, "nodeType": "ExpressionStatement", "src": "4005:65:31"}, {"expression": {"argumentTypes": null, "id": 3205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3201, "name": "transactionsExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3095, "src": "4112:20:31", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)"}}, "id": 3203, "indexExpression": {"argumentTypes": null, "id": 3202, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3179, "src": "4133:15:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4112:37:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "74727565", "id": 3204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4152:4:31", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "4112:44:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3206, "nodeType": "ExpressionStatement", "src": "4112:44:31"}, {"assignments": [3208, 3210], "declarations": [{"constant": false, "id": 3208, "name": "didSucceed", "nodeType": "VariableDeclaration", "scope": 3246, "src": "4167:15:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3207, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4167:4:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3210, "name": "returnData", "nodeType": "VariableDeclaration", "scope": 3246, "src": "4184:23:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3209, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4184:5:31", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 3218, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3215, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3171, "src": "4238:11:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 3216, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "data", "nodeType": "MemberAccess", "referencedDeclaration": 11530, "src": "4238:16:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3212, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12179, "src": "4219:4:31", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinTransactions_$3412", "typeString": "contract MixinTransactions"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_MixinTransactions_$3412", "typeString": "contract MixinTransactions"}], "id": 3211, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4211:7:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 3213, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4211:13:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3214, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "delegatecall", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4211:26:31", "typeDescriptions": {"typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) returns (bool,bytes memory)"}}, "id": 3217, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4211:44:31", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "4166:89:31"}, {"condition": {"argumentTypes": null, "id": 3220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "4269:11:31", "subExpression": {"argumentTypes": null, "id": 3219, "name": "didSucceed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3208, "src": "4270:10:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3232, "nodeType": "IfStatement", "src": "4265:187:31", "trueBody": {"id": 3231, "nodeType": "Block", "src": "4282:170:31", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3226, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3179, "src": "4383:15:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 3227, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3210, "src": "4416:10:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3224, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "4318:21:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransactionExecutionError", "nodeType": "MemberAccess", "referencedDeclaration": 9258, "src": "4318:47:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes32,bytes memory) pure returns (bytes memory)"}}, "id": 3228, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4318:122:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3221, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "4296:13:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 3223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "4296:21:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 3229, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4296:145:31", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3230, "nodeType": "ExpressionStatement", "src": "4296:145:31"}]}}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3234, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3192, "src": "4571:13:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 3236, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4594:1:31", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 3235, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4586:7:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 3237, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4586:10:31", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address_payable", "typeString": "address payable"}], "id": 3233, "name": "_setCurrentContextAddressIfRequired", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3387, "src": "4535:35:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 3238, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4535:62:31", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3239, "nodeType": "ExpressionStatement", "src": "4535:62:31"}, {"eventCall": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3241, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3179, "src": "4634:15:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 3240, "name": "TransactionExecution", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7852, "src": "4613:20:31", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)"}}, "id": 3242, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4613:37:31", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3243, "nodeType": "EmitStatement", "src": "4608:42:31"}, {"expression": {"argumentTypes": null, "id": 3244, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3210, "src": "4668:10:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3177, "id": 3245, "nodeType": "Return", "src": "4661:17:31"}]}, "documentation": "@dev Executes an Exchange method call in the context of signer.\n @param transaction 0x transaction structure.\n @param signature Proof that transaction has been signed by signer.\n @return ABI encoded return data of the underlying Exchange function call.", "id": 3247, "implemented": true, "kind": "function", "modifiers": [], "name": "_executeTransaction", "nodeType": "FunctionDefinition", "parameters": {"id": 3174, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3171, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 3247, "src": "3522:57:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 3170, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "3522:38:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3173, "name": "signature", "nodeType": "VariableDeclaration", "scope": 3247, "src": "3589:22:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3172, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3589:5:31", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "3512:105:31"}, "returnParameters": {"id": 3177, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3176, "name": "", "nodeType": "VariableDeclaration", "scope": 3247, "src": "3652:12:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3175, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3652:5:31", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "3651:14:31"}, "scope": 3412, "src": "3484:1201:31", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 3368, "nodeType": "Block", "src": "5177:2094:31", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3256, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12081, "src": "5289:5:31", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 3257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5289:15:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3258, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3249, "src": "5308:11:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 3259, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expirationTimeSeconds", "nodeType": "MemberAccess", "referencedDeclaration": 11524, "src": "5308:33:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5289:52:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3274, "nodeType": "IfStatement", "src": "5285:260:31", "trueBody": {"id": 3273, "nodeType": "Block", "src": "5343:202:31", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3266, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "5435:21:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransactionErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8763, "src": "5435:43:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_TransactionErrorCodes_$8763_$", "typeString": "type(enum LibExchangeRichErrors.TransactionErrorCodes)"}}, "id": 3268, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "EXPIRED", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5435:51:31", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}}, {"argumentTypes": null, "id": 3269, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3253, "src": "5504:15:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 3264, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "5379:21:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransactionError", "nodeType": "MemberAccess", "referencedDeclaration": 9241, "src": "5379:38:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_TransactionErrorCodes_$8763_$_t_bytes32_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.TransactionErrorCodes,bytes32) pure returns (bytes memory)"}}, "id": 3270, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5379:154:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3261, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "5357:13:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 3263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "5357:21:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 3271, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5357:177:31", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3272, "nodeType": "ExpressionStatement", "src": "5357:177:31"}]}}, {"assignments": [3276], "declarations": [{"constant": false, "id": 3276, "name": "requiredGasPrice", "nodeType": "VariableDeclaration", "scope": 3368, "src": "5630:24:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3275, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5630:7:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3279, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3277, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3249, "src": "5657:11:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 3278, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "gasPrice", "nodeType": "MemberAccess", "referencedDeclaration": 11526, "src": "5657:20:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5630:47:31"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3280, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12103, "src": "5691:2:31", "typeDescriptions": {"typeIdentifier": "t_magic_transaction", "typeString": "tx"}}, "id": 3281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "gasprice", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5691:11:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 3282, "name": "requiredGasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3276, "src": "5706:16:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5691:31:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3297, "nodeType": "IfStatement", "src": "5687:241:31", "trueBody": {"id": 3296, "nodeType": "Block", "src": "5724:204:31", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3289, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3253, "src": "5824:15:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3290, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12103, "src": "5857:2:31", "typeDescriptions": {"typeIdentifier": "t_magic_transaction", "typeString": "tx"}}, "id": 3291, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "gasprice", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5857:11:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 3292, "name": "requiredGasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3276, "src": "5886:16:31", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 3287, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "5760:21:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransactionGasPriceError", "nodeType": "MemberAccess", "referencedDeclaration": 9278, "src": "5760:46:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes32,uint256,uint256) pure returns (bytes memory)"}}, "id": 3293, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5760:156:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3284, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "5738:13:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 3286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "5738:21:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 3294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5738:179:31", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3295, "nodeType": "ExpressionStatement", "src": "5738:179:31"}]}}, {"assignments": [3299], "declarations": [{"constant": false, "id": 3299, "name": "currentContextAddress_", "nodeType": "VariableDeclaration", "scope": 3368, "src": "6024:30:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3298, "name": "address", "nodeType": "ElementaryTypeName", "src": "6024:7:31", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 3301, "initialValue": {"argumentTypes": null, "id": 3300, "name": "currentContextAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3097, "src": "6057:21:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "6024:54:31"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3302, "name": "currentContextAddress_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3299, "src": "6092:22:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 3304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6126:1:31", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 3303, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6118:7:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 3305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6118:10:31", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "6092:36:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3318, "nodeType": "IfStatement", "src": "6088:229:31", "trueBody": {"id": 3317, "nodeType": "Block", "src": "6130:187:31", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3312, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3253, "src": "6236:15:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 3313, "name": "currentContextAddress_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3299, "src": "6269:22:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 3310, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "6166:21:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransactionInvalidContextError", "nodeType": "MemberAccess", "referencedDeclaration": 9295, "src": "6166:52:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes32,address) pure returns (bytes memory)"}}, "id": 3314, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6166:139:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3307, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "6144:13:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 3309, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "6144:21:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 3315, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6144:162:31", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3316, "nodeType": "ExpressionStatement", "src": "6144:162:31"}]}}, {"condition": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3319, "name": "transactionsExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3095, "src": "6385:20:31", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)"}}, "id": 3321, "indexExpression": {"argumentTypes": null, "id": 3320, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3253, "src": "6406:15:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6385:37:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3335, "nodeType": "IfStatement", "src": "6381:254:31", "trueBody": {"id": 3334, "nodeType": "Block", "src": "6424:211:31", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3327, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "6516:21:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3328, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransactionErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8763, "src": "6516:43:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_TransactionErrorCodes_$8763_$", "typeString": "type(enum LibExchangeRichErrors.TransactionErrorCodes)"}}, "id": 3329, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ALREADY_EXECUTED", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6516:60:31", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}}, {"argumentTypes": null, "id": 3330, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3253, "src": "6594:15:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 3325, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "6460:21:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransactionError", "nodeType": "MemberAccess", "referencedDeclaration": 9241, "src": "6460:38:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_TransactionErrorCodes_$8763_$_t_bytes32_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.TransactionErrorCodes,bytes32) pure returns (bytes memory)"}}, "id": 3331, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6460:163:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3322, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "6438:13:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 3324, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "6438:21:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 3332, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6438:186:31", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3333, "nodeType": "ExpressionStatement", "src": "6438:186:31"}]}}, {"assignments": [3337], "declarations": [{"constant": false, "id": 3337, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 3368, "src": "6746:21:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3336, "name": "address", "nodeType": "ElementaryTypeName", "src": "6746:7:31", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 3340, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3338, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3249, "src": "6770:11:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 3339, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "signerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 11528, "src": "6770:25:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "6746:49:31"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 3351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3344, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3341, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3337, "src": "6809:13:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3342, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "6826:3:31", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 3343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6826:10:31", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "6809:27:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"argumentTypes": null, "id": 3350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "6840:140:31", "subExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3346, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3249, "src": "6895:11:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, {"argumentTypes": null, "id": 3347, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3253, "src": "6924:15:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 3348, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3251, "src": "6957:9:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 3345, "name": "_isValidTransactionWithHashSignature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7843, "src": "6841:36:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_ZeroExTransaction_$11531_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory,bytes32,bytes memory) view returns (bool)"}}, "id": 3349, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6841:139:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6809:171:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3367, "nodeType": "IfStatement", "src": "6805:460:31", "trueBody": {"id": 3366, "nodeType": "Block", "src": "6991:274:31", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3357, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "7081:21:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3358, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "7081:41:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 3359, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "BAD_TRANSACTION_SIGNATURE", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7081:67:31", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 3360, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3253, "src": "7166:15:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 3361, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3337, "src": "7199:13:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 3362, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3251, "src": "7230:9:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3355, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "7027:21:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureError", "nodeType": "MemberAccess", "referencedDeclaration": 9013, "src": "7027:36:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_SignatureErrorCodes_$8760_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.SignatureErrorCodes,bytes32,address,bytes memory) pure returns (bytes memory)"}}, "id": 3363, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7027:226:31", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3352, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "7005:13:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 3354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "7005:21:31", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 3364, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7005:249:31", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3365, "nodeType": "ExpressionStatement", "src": "7005:249:31"}]}}]}, "documentation": "@dev Validates context for executeTransaction. Succeeds or throws.\n @param transaction 0x transaction structure.\n @param signature Proof that transaction has been signed by signer.\n @param transactionHash EIP712 typed data hash of 0x transaction.", "id": 3369, "implemented": true, "kind": "function", "modifiers": [], "name": "_assertExecutableTransaction", "nodeType": "FunctionDefinition", "parameters": {"id": 3254, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3249, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 3369, "src": "5014:57:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 3248, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "5014:38:31", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3251, "name": "signature", "nodeType": "VariableDeclaration", "scope": 3369, "src": "5081:22:31", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3250, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5081:5:31", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3253, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 3369, "src": "5113:23:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3252, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5113:7:31", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "5004:138:31"}, "returnParameters": {"id": 3255, "nodeType": "ParameterList", "parameters": [], "src": "5177:0:31"}, "scope": 3412, "src": "4967:2304:31", "stateMutability": "view", "superFunction": null, "visibility": "internal"}, {"body": {"id": 3386, "nodeType": "Block", "src": "7621:112:31", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3376, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3371, "src": "7635:13:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3377, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "7652:3:31", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 3378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7652:10:31", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "7635:27:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3385, "nodeType": "IfStatement", "src": "7631:96:31", "trueBody": {"id": 3384, "nodeType": "Block", "src": "7664:63:31", "statements": [{"expression": {"argumentTypes": null, "id": 3382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 3380, "name": "currentContextAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3097, "src": "7678:21:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 3381, "name": "contextAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3373, "src": "7702:14:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7678:38:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3383, "nodeType": "ExpressionStatement", "src": "7678:38:31"}]}}]}, "documentation": "@dev Sets the currentContextAddress if the current context is not msg.sender.\n @param signerAddress Address of the transaction signer.\n @param contextAddress The current context address.", "id": 3387, "implemented": true, "kind": "function", "modifiers": [], "name": "_setCurrentContextAddressIfRequired", "nodeType": "FunctionDefinition", "parameters": {"id": 3374, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3371, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 3387, "src": "7540:21:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3370, "name": "address", "nodeType": "ElementaryTypeName", "src": "7540:7:31", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3373, "name": "contextAddress", "nodeType": "VariableDeclaration", "scope": 3387, "src": "7571:22:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3372, "name": "address", "nodeType": "ElementaryTypeName", "src": "7571:7:31", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "7530:69:31"}, "returnParameters": {"id": 3375, "nodeType": "ParameterList", "parameters": [], "src": "7621:0:31"}, "scope": 3412, "src": "7486:247:31", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 3410, "nodeType": "Block", "src": "8274:211:31", "statements": [{"assignments": [3393], "declarations": [{"constant": false, "id": 3393, "name": "currentContextAddress_", "nodeType": "VariableDeclaration", "scope": 3410, "src": "8284:30:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3392, "name": "address", "nodeType": "ElementaryTypeName", "src": "8284:7:31", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 3395, "initialValue": {"argumentTypes": null, "id": 3394, "name": "currentContextAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3097, "src": "8317:21:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "8284:54:31"}, {"assignments": [3397], "declarations": [{"constant": false, "id": 3397, "name": "contextAddress", "nodeType": "VariableDeclaration", "scope": 3410, "src": "8348:22:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3396, "name": "address", "nodeType": "ElementaryTypeName", "src": "8348:7:31", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 3407, "initialValue": {"argumentTypes": null, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3402, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3398, "name": "currentContextAddress_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3393, "src": "8373:22:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 3400, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8407:1:31", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 3399, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8399:7:31", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 3401, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8399:10:31", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "8373:36:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"argumentTypes": null, "id": 3405, "name": "currentContextAddress_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3393, "src": "8425:22:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3406, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "8373:74:31", "trueExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3403, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "8412:3:31", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 3404, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8412:10:31", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "8348:99:31"}, {"expression": {"argumentTypes": null, "id": 3408, "name": "contextAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3397, "src": "8464:14:31", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 3391, "id": 3409, "nodeType": "Return", "src": "8457:21:31"}]}, "documentation": "@dev The current function will be called in the context of this address (either 0x transaction signer or `msg.sender`).\n If calling a fill function, this address will represent the taker.\n If calling a cancel function, this address will represent the maker.\n @return Signer of 0x transaction if entry point is `executeTransaction`.\n `msg.sender` if entry point is any other function.", "id": 3411, "implemented": true, "kind": "function", "modifiers": [], "name": "_getCurrentContextAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 3388, "nodeType": "ParameterList", "parameters": [], "src": "8211:2:31"}, "returnParameters": {"id": 3391, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3390, "name": "", "nodeType": "VariableDeclaration", "scope": 3411, "src": "8261:7:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3389, "name": "address", "nodeType": "ElementaryTypeName", "src": "8261:7:31", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "8260:9:31"}, "scope": 3412, "src": "8177:308:31", "stateMutability": "view", "superFunction": 7878, "visibility": "internal"}], "scope": 3413, "src": "1085:7402:31"}], "src": "580:7908:31"}, "id": 31}, "contracts/exchange/MixinTransferSimulator.sol": {"ast": {"absolutePath": "contracts/exchange/MixinTransferSimulator.sol", "exportedSymbols": {"MixinTransferSimulator": [3474]}, "id": 3475, "nodeType": "SourceUnit", "nodes": [{"id": 3414, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:32"}, {"id": 3415, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:32"}, {"absolutePath": "contracts/exchange/MixinAssetProxyDispatcher.sol", "file": "./MixinAssetProxyDispatcher.sol", "id": 3416, "nodeType": "ImportDirective", "scope": 3475, "sourceUnit": 224, "src": "639:41:32", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 3417, "name": "MixinAssetProxyDispatcher", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 223, "src": "722:25:32", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinAssetProxyDispatcher_$223", "typeString": "contract MixinAssetProxyDispatcher"}}, "id": 3418, "nodeType": "InheritanceSpecifier", "src": "722:25:32"}], "contractDependencies": [223, 7507, 9953, 11737], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 3474, "linearizedBaseContracts": [3474, 223, 7507, 9953, 11737], "name": "MixinTransferSimulator", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 3472, "nodeType": "Block", "src": "1890:482:32", "statements": [{"assignments": [3434], "declarations": [{"constant": false, "id": 3434, "name": "length", "nodeType": "VariableDeclaration", "scope": 3472, "src": "1900:14:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1900:7:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3437, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3435, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3421, "src": "1917:9:32", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 3436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1917:16:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1900:33:32"}, {"body": {"id": 3466, "nodeType": "Block", "src": "1981:345:32", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3450, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3439, "src": "2175:1:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3449, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2167:7:32", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}, "id": 3451, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2167:10:32", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3452, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3421, "src": "2195:9:32", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 3454, "indexExpression": {"argumentTypes": null, "id": 3453, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3439, "src": "2205:1:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2195:12:32", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3455, "name": "fromAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3424, "src": "2225:13:32", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 3457, "indexExpression": {"argumentTypes": null, "id": 3456, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3439, "src": "2239:1:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2225:16:32", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3458, "name": "toAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3427, "src": "2259:11:32", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 3460, "indexExpression": {"argumentTypes": null, "id": 3459, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3439, "src": "2271:1:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2259:14:32", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3461, "name": "amounts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3430, "src": "2291:7:32", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 3463, "indexExpression": {"argumentTypes": null, "id": 3462, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3439, "src": "2299:1:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2291:10:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3448, "name": "_dispatchTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "1995:21:32", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes memory,address,address,uint256)"}}, "id": 3464, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1995:320:32", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3465, "nodeType": "ExpressionStatement", "src": "1995:320:32"}]}, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3442, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3439, "src": "1963:1:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 3443, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3434, "src": "1968:6:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1963:11:32", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3467, "initializationExpression": {"assignments": [3439], "declarations": [{"constant": false, "id": 3439, "name": "i", "nodeType": "VariableDeclaration", "scope": 3467, "src": "1948:9:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3438, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1948:7:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3441, "initialValue": {"argumentTypes": null, "hexValue": "30", "id": 3440, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1960:1:32", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1948:13:32"}, "loopExpression": {"expression": {"argumentTypes": null, "id": 3446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1976:3:32", "subExpression": {"argumentTypes": null, "id": 3445, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3439, "src": "1976:1:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3447, "nodeType": "ExpressionStatement", "src": "1976:3:32"}, "nodeType": "ForStatement", "src": "1943:383:32"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "5452414e53464552535f5355434345535346554c", "id": 3469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2342:22:32", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_edd9eb0ada826e289e5c0e6beb09c2d032a8bb862fb545423b9f3a666bf85e4d", "typeString": "literal_string \"TRANSFERS_SUCCESSFUL\""}, "value": "TRANSFERS_SUCCESSFUL"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_edd9eb0ada826e289e5c0e6beb09c2d032a8bb862fb545423b9f3a666bf85e4d", "typeString": "literal_string \"TRANSFERS_SUCCESSFUL\""}], "id": 3468, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [12096, 12097], "referencedDeclaration": 12097, "src": "2335:6:32", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 3470, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2335:30:32", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3471, "nodeType": "ExpressionStatement", "src": "2335:30:32"}]}, "documentation": "@dev This function may be used to simulate any amount of transfers\n As they would occur through the Exchange contract. Note that this function\n will always revert, even if all transfers are successful. However, it may\n be used with eth_call or with a try/catch pattern in order to simulate\n the results of the transfers.\n @param assetData Array of asset details, each encoded per the AssetProxy contract specification.\n @param fromAddresses Array containing the `from` addresses that correspond with each transfer.\n @param toAddresses Array containing the `to` addresses that correspond with each transfer.\n @param amounts Array containing the amounts that correspond to each transfer.\n @return This function does not return a value. However, it will always revert with\n `Error(\"TRANSFERS_SUCCESSFUL\")` if all of the transfers were successful.", "id": 3473, "implemented": true, "kind": "function", "modifiers": [], "name": "simulateDispatchTransferFromCalls", "nodeType": "FunctionDefinition", "parameters": {"id": 3431, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3421, "name": "assetData", "nodeType": "VariableDeclaration", "scope": 3473, "src": "1728:24:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 3419, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1728:5:32", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 3420, "length": null, "nodeType": "ArrayTypeName", "src": "1728:7:32", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3424, "name": "fromAddresses", "nodeType": "VariableDeclaration", "scope": 3473, "src": "1762:30:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 3422, "name": "address", "nodeType": "ElementaryTypeName", "src": "1762:7:32", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3423, "length": null, "nodeType": "ArrayTypeName", "src": "1762:9:32", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3427, "name": "toAddresses", "nodeType": "VariableDeclaration", "scope": 3473, "src": "1802:28:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 3425, "name": "address", "nodeType": "ElementaryTypeName", "src": "1802:7:32", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3426, "length": null, "nodeType": "ArrayTypeName", "src": "1802:9:32", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3430, "name": "amounts", "nodeType": "VariableDeclaration", "scope": 3473, "src": "1840:24:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 3428, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1840:7:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3429, "length": null, "nodeType": "ArrayTypeName", "src": "1840:9:32", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "value": null, "visibility": "internal"}], "src": "1718:152:32"}, "returnParameters": {"id": 3432, "nodeType": "ParameterList", "parameters": [], "src": "1890:0:32"}, "scope": 3474, "src": "1676:696:32", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public"}], "scope": 3475, "src": "683:1691:32"}], "src": "580:1795:32"}, "id": 32}, "contracts/exchange/MixinWrapperFunctions.sol": {"ast": {"absolutePath": "contracts/exchange/MixinWrapperFunctions.sol", "exportedSymbols": {"MixinWrapperFunctions": [4079]}, "id": 4080, "nodeType": "SourceUnit", "nodes": [{"id": 3476, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:33"}, {"id": 3477, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:33"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol", "file": "@0x/contracts-utils/contracts/src/LibSafeMath.sol", "id": 3478, "nodeType": "ImportDirective", "scope": 4080, "sourceUnit": 11217, "src": "639:59:33", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "@0x/contracts-utils/contracts/src/LibRichErrors.sol", "id": 3479, "nodeType": "ImportDirective", "scope": 4080, "sourceUnit": 9873, "src": "699:61:33", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol", "id": 3480, "nodeType": "ImportDirective", "scope": 4080, "sourceUnit": 11029, "src": "761:64:33", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibMath.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibMath.sol", "id": 3481, "nodeType": "ImportDirective", "scope": 4080, "sourceUnit": 10918, "src": "826:63:33", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibFillResults.sol", "id": 3482, "nodeType": "ImportDirective", "scope": 4080, "sourceUnit": 10640, "src": "890:70:33", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "id": 3483, "nodeType": "ImportDirective", "scope": 4080, "sourceUnit": 9343, "src": "961:77:33", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IExchangeCore.sol", "file": "./interfaces/IExchangeCore.sol", "id": 3484, "nodeType": "ImportDirective", "scope": 4080, "sourceUnit": 7657, "src": "1039:40:33", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IWrapperFunctions.sol", "file": "./interfaces/IWrapperFunctions.sol", "id": 3485, "nodeType": "ImportDirective", "scope": 4080, "sourceUnit": 8033, "src": "1080:44:33", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/MixinExchangeCore.sol", "file": "./MixinExchangeCore.sol", "id": 3486, "nodeType": "ImportDirective", "scope": 4080, "sourceUnit": 999, "src": "1125:33:33", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 3487, "name": "IWrapperFunctions", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8032, "src": "1199:17:33", "typeDescriptions": {"typeIdentifier": "t_contract$_IWrapperFunctions_$8032", "typeString": "contract IWrapperFunctions"}}, "id": 3488, "nodeType": "InheritanceSpecifier", "src": "1199:17:33"}, {"arguments": null, "baseName": {"contractScope": null, "id": 3489, "name": "MixinExchangeCore", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 998, "src": "1222:17:33", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinExchangeCore_$998", "typeString": "contract MixinExchangeCore"}}, "id": 3490, "nodeType": "InheritanceSpecifier", "src": "1222:17:33"}], "contractDependencies": [223, 998, 2069, 3070, 3412, 7507, 7656, 7757, 7844, 7879, 8032, 8731, 9953, 11323, 11600, 11737, 11874], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 4079, "linearizedBaseContracts": [4079, 998, 3070, 3412, 7879, 7844, 11600, 2069, 223, 8731, 11323, 11874, 7507, 9953, 11737, 7757, 7656, 8032], "name": "MixinWrapperFunctions", "nodeType": "ContractDefinition", "nodes": [{"id": 3493, "libraryName": {"contractScope": null, "id": 3491, "name": "LibSafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11216, "src": "1252:11:33", "typeDescriptions": {"typeIdentifier": "t_contract$_LibSafeMath_$11216", "typeString": "library LibSafeMath"}}, "nodeType": "UsingForDirective", "src": "1246:30:33", "typeName": {"id": 3492, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1268:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 3516, "nodeType": "Block", "src": "1911:161:33", "statements": [{"expression": {"argumentTypes": null, "id": 3512, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 3506, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3504, "src": "1921:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3508, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3495, "src": "1965:5:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 3509, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3497, "src": "1984:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 3510, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3499, "src": "2018:9:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 3507, "name": "_fillOrKillOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4017, "src": "1935:16:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,bytes memory) returns (struct LibFillResults.FillResults memory)"}}, "id": 3511, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1935:102:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "1921:116:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3513, "nodeType": "ExpressionStatement", "src": "1921:116:33"}, {"expression": {"argumentTypes": null, "id": 3514, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3504, "src": "2054:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "functionReturnParameters": 3505, "id": 3515, "nodeType": "Return", "src": "2047:18:33"}]}, "documentation": "@dev Fills the input order. Reverts if exact `takerAssetFillAmount` not filled.\n @param order Order struct containing order specifications.\n @param takerAssetFillAmount Desired amount of takerAsset to sell.\n @param signature Proof that order has been created by maker.\n @return fillResults Amounts filled and fees paid.", "id": 3517, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 3502, "modifierName": {"argumentTypes": null, "id": 3501, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "1815:27:33", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "1815:27:33"}], "name": "fillOrKillOrder", "nodeType": "FunctionDefinition", "parameters": {"id": 3500, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3495, "name": "order", "nodeType": "VariableDeclaration", "scope": 3517, "src": "1672:27:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 3494, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "1672:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3497, "name": "takerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 3517, "src": "1709:28:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3496, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1709:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3499, "name": "signature", "nodeType": "VariableDeclaration", "scope": 3517, "src": "1747:22:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3498, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1747:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1662:113:33"}, "returnParameters": {"id": 3505, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3504, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 3517, "src": "1860:45:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 3503, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "1860:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "1859:47:33"}, "scope": 4079, "src": "1638:434:33", "stateMutability": "payable", "superFunction": 7928, "visibility": "public"}, {"body": {"id": 3577, "nodeType": "Block", "src": "2729:370:33", "statements": [{"assignments": [3535], "declarations": [{"constant": false, "id": 3535, "name": "ordersLength", "nodeType": "VariableDeclaration", "scope": 3577, "src": "2739:20:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3534, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2739:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3538, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3536, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3520, "src": "2762:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2762:13:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2739:36:33"}, {"expression": {"argumentTypes": null, "id": 3545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 3539, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3532, "src": "2785:11:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3543, "name": "ordersLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3535, "src": "2832:12:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3542, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "2799:32:33", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_$", "typeString": "function (uint256) pure returns (struct LibFillResults.FillResults memory[] memory)"}, "typeName": {"baseType": {"contractScope": null, "id": 3540, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "2803:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 3541, "length": null, "nodeType": "ArrayTypeName", "src": "2803:28:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}}, "id": 3544, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2799:46:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "src": "2785:60:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 3546, "nodeType": "ExpressionStatement", "src": "2785:60:33"}, {"body": {"id": 3573, "nodeType": "Block", "src": "2899:166:33", "statements": [{"expression": {"argumentTypes": null, "id": 3571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3557, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3532, "src": "2913:11:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 3559, "indexExpression": {"argumentTypes": null, "id": 3558, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3548, "src": "2925:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2913:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3561, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3520, "src": "2958:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3563, "indexExpression": {"argumentTypes": null, "id": 3562, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3548, "src": "2965:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2958:9:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3564, "name": "takerAssetFillAmounts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3523, "src": "2985:21:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 3566, "indexExpression": {"argumentTypes": null, "id": 3565, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3548, "src": "3007:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2985:24:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3567, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3526, "src": "3027:10:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 3569, "indexExpression": {"argumentTypes": null, "id": 3568, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3548, "src": "3038:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3027:13:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}], "id": 3560, "name": "_fillOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "2930:10:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,bytes memory) returns (struct LibFillResults.FillResults memory)"}}, "id": 3570, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2930:124:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "2913:141:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3572, "nodeType": "ExpressionStatement", "src": "2913:141:33"}]}, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3551, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3548, "src": "2875:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 3552, "name": "ordersLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3535, "src": "2880:12:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2875:17:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3574, "initializationExpression": {"assignments": [3548], "declarations": [{"constant": false, "id": 3548, "name": "i", "nodeType": "VariableDeclaration", "scope": 3574, "src": "2860:9:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3547, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2860:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3550, "initialValue": {"argumentTypes": null, "hexValue": "30", "id": 3549, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2872:1:33", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "2860:13:33"}, "loopExpression": {"expression": {"argumentTypes": null, "id": 3555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2894:3:33", "subExpression": {"argumentTypes": null, "id": 3554, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3548, "src": "2894:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3556, "nodeType": "ExpressionStatement", "src": "2894:3:33"}, "nodeType": "ForStatement", "src": "2855:210:33"}, {"expression": {"argumentTypes": null, "id": 3575, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3532, "src": "3081:11:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "functionReturnParameters": 3533, "id": 3576, "nodeType": "Return", "src": "3074:18:33"}]}, "documentation": "@dev Executes multiple calls of fillOrder.\n @param orders Array of order specifications.\n @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell in orders.\n @param signatures Proofs that orders have been created by makers.\n @return fillResults Array of amounts filled and fees paid by makers and taker.", "id": 3578, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 3529, "modifierName": {"argumentTypes": null, "id": 3528, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "2631:27:33", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "2631:27:33"}], "name": "batchFillOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 3527, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3520, "name": "orders", "nodeType": "VariableDeclaration", "scope": 3578, "src": "2472:30:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3518, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "2472:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 3519, "length": null, "nodeType": "ArrayTypeName", "src": "2472:16:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3523, "name": "takerAssetFillAmounts", "nodeType": "VariableDeclaration", "scope": 3578, "src": "2512:38:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 3521, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2512:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3522, "length": null, "nodeType": "ArrayTypeName", "src": "2512:9:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3526, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 3578, "src": "2560:25:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 3524, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2560:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 3525, "length": null, "nodeType": "ArrayTypeName", "src": "2560:7:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "2462:129:33"}, "returnParameters": {"id": 3533, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3532, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 3578, "src": "2676:47:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3530, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "2676:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 3531, "length": null, "nodeType": "ArrayTypeName", "src": "2676:28:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}, "value": null, "visibility": "internal"}], "src": "2675:49:33"}, "scope": 4079, "src": "2438:661:33", "stateMutability": "payable", "superFunction": 7943, "visibility": "public"}, {"body": {"id": 3638, "nodeType": "Block", "src": "3768:376:33", "statements": [{"assignments": [3596], "declarations": [{"constant": false, "id": 3596, "name": "ordersLength", "nodeType": "VariableDeclaration", "scope": 3638, "src": "3778:20:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3595, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3778:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3599, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3597, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3581, "src": "3801:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3801:13:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "3778:36:33"}, {"expression": {"argumentTypes": null, "id": 3606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 3600, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3593, "src": "3824:11:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3604, "name": "ordersLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3596, "src": "3871:12:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3603, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "3838:32:33", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_$", "typeString": "function (uint256) pure returns (struct LibFillResults.FillResults memory[] memory)"}, "typeName": {"baseType": {"contractScope": null, "id": 3601, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "3842:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 3602, "length": null, "nodeType": "ArrayTypeName", "src": "3842:28:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}}, "id": 3605, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3838:46:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "src": "3824:60:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 3607, "nodeType": "ExpressionStatement", "src": "3824:60:33"}, {"body": {"id": 3634, "nodeType": "Block", "src": "3938:172:33", "statements": [{"expression": {"argumentTypes": null, "id": 3632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3618, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3593, "src": "3952:11:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 3620, "indexExpression": {"argumentTypes": null, "id": 3619, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "3964:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3952:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3622, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3581, "src": "4003:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3624, "indexExpression": {"argumentTypes": null, "id": 3623, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "4010:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4003:9:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3625, "name": "takerAssetFillAmounts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3584, "src": "4030:21:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 3627, "indexExpression": {"argumentTypes": null, "id": 3626, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "4052:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4030:24:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3628, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3587, "src": "4072:10:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 3630, "indexExpression": {"argumentTypes": null, "id": 3629, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "4083:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4072:13:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}], "id": 3621, "name": "_fillOrKillOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4017, "src": "3969:16:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,bytes memory) returns (struct LibFillResults.FillResults memory)"}}, "id": 3631, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3969:130:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "3952:147:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3633, "nodeType": "ExpressionStatement", "src": "3952:147:33"}]}, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3612, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "3914:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 3613, "name": "ordersLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3596, "src": "3919:12:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3914:17:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3635, "initializationExpression": {"assignments": [3609], "declarations": [{"constant": false, "id": 3609, "name": "i", "nodeType": "VariableDeclaration", "scope": 3635, "src": "3899:9:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3608, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3899:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3611, "initialValue": {"argumentTypes": null, "hexValue": "30", "id": 3610, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3911:1:33", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "3899:13:33"}, "loopExpression": {"expression": {"argumentTypes": null, "id": 3616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3933:3:33", "subExpression": {"argumentTypes": null, "id": 3615, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "3933:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3617, "nodeType": "ExpressionStatement", "src": "3933:3:33"}, "nodeType": "ForStatement", "src": "3894:216:33"}, {"expression": {"argumentTypes": null, "id": 3636, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3593, "src": "4126:11:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "functionReturnParameters": 3594, "id": 3637, "nodeType": "Return", "src": "4119:18:33"}]}, "documentation": "@dev Executes multiple calls of fillOrKillOrder.\n @param orders Array of order specifications.\n @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell in orders.\n @param signatures Proofs that orders have been created by makers.\n @return fillResults Array of amounts filled and fees paid by makers and taker.", "id": 3639, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 3590, "modifierName": {"argumentTypes": null, "id": 3589, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "3670:27:33", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "3670:27:33"}], "name": "batchFillOrKillOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 3588, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3581, "name": "orders", "nodeType": "VariableDeclaration", "scope": 3639, "src": "3511:30:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3579, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "3511:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 3580, "length": null, "nodeType": "ArrayTypeName", "src": "3511:16:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3584, "name": "takerAssetFillAmounts", "nodeType": "VariableDeclaration", "scope": 3639, "src": "3551:38:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 3582, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3551:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3583, "length": null, "nodeType": "ArrayTypeName", "src": "3551:9:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3587, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 3639, "src": "3599:25:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 3585, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3599:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 3586, "length": null, "nodeType": "ArrayTypeName", "src": "3599:7:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "3501:129:33"}, "returnParameters": {"id": 3594, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3593, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 3639, "src": "3715:47:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3591, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "3715:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 3592, "length": null, "nodeType": "ArrayTypeName", "src": "3715:28:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}, "value": null, "visibility": "internal"}], "src": "3714:49:33"}, "scope": 4079, "src": "3471:673:33", "stateMutability": "payable", "superFunction": 7958, "visibility": "public"}, {"body": {"id": 3699, "nodeType": "Block", "src": "4856:377:33", "statements": [{"assignments": [3657], "declarations": [{"constant": false, "id": 3657, "name": "ordersLength", "nodeType": "VariableDeclaration", "scope": 3699, "src": "4866:20:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3656, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4866:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3660, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3658, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3642, "src": "4889:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4889:13:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "4866:36:33"}, {"expression": {"argumentTypes": null, "id": 3667, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 3661, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3654, "src": "4912:11:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3665, "name": "ordersLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3657, "src": "4959:12:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3664, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "4926:32:33", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_$", "typeString": "function (uint256) pure returns (struct LibFillResults.FillResults memory[] memory)"}, "typeName": {"baseType": {"contractScope": null, "id": 3662, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "4930:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 3663, "length": null, "nodeType": "ArrayTypeName", "src": "4930:28:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}}, "id": 3666, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4926:46:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "src": "4912:60:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 3668, "nodeType": "ExpressionStatement", "src": "4912:60:33"}, {"body": {"id": 3695, "nodeType": "Block", "src": "5026:173:33", "statements": [{"expression": {"argumentTypes": null, "id": 3693, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3679, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3654, "src": "5040:11:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "id": 3681, "indexExpression": {"argumentTypes": null, "id": 3680, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3670, "src": "5052:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5040:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3683, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3642, "src": "5092:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3685, "indexExpression": {"argumentTypes": null, "id": 3684, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3670, "src": "5099:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5092:9:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3686, "name": "takerAssetFillAmounts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3645, "src": "5119:21:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 3688, "indexExpression": {"argumentTypes": null, "id": 3687, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3670, "src": "5141:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5119:24:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3689, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3648, "src": "5161:10:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 3691, "indexExpression": {"argumentTypes": null, "id": 3690, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3670, "src": "5172:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5161:13:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}], "id": 3682, "name": "_fillOrderNoThrow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4078, "src": "5057:17:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,bytes memory) returns (struct LibFillResults.FillResults memory)"}}, "id": 3692, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5057:131:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "5040:148:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3694, "nodeType": "ExpressionStatement", "src": "5040:148:33"}]}, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3675, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3673, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3670, "src": "5002:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 3674, "name": "ordersLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3657, "src": "5007:12:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5002:17:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3696, "initializationExpression": {"assignments": [3670], "declarations": [{"constant": false, "id": 3670, "name": "i", "nodeType": "VariableDeclaration", "scope": 3696, "src": "4987:9:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3669, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4987:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3672, "initialValue": {"argumentTypes": null, "hexValue": "30", "id": 3671, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4999:1:33", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "4987:13:33"}, "loopExpression": {"expression": {"argumentTypes": null, "id": 3677, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "5021:3:33", "subExpression": {"argumentTypes": null, "id": 3676, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3670, "src": "5021:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3678, "nodeType": "ExpressionStatement", "src": "5021:3:33"}, "nodeType": "ForStatement", "src": "4982:217:33"}, {"expression": {"argumentTypes": null, "id": 3697, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3654, "src": "5215:11:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults memory[] memory"}}, "functionReturnParameters": 3655, "id": 3698, "nodeType": "Return", "src": "5208:18:33"}]}, "documentation": "@dev Executes multiple calls of fillOrder. If any fill reverts, the error is caught and ignored.\n @param orders Array of order specifications.\n @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell in orders.\n @param signatures Proofs that orders have been created by makers.\n @return fillResults Array of amounts filled and fees paid by makers and taker.", "id": 3700, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 3651, "modifierName": {"argumentTypes": null, "id": 3650, "name": "disableRefundUntilEnd", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11259, "src": "4764:21:33", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "4764:21:33"}], "name": "batchFillOrdersNoThrow", "nodeType": "FunctionDefinition", "parameters": {"id": 3649, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3642, "name": "orders", "nodeType": "VariableDeclaration", "scope": 3700, "src": "4605:30:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3640, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4605:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 3641, "length": null, "nodeType": "ArrayTypeName", "src": "4605:16:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3645, "name": "takerAssetFillAmounts", "nodeType": "VariableDeclaration", "scope": 3700, "src": "4645:38:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 3643, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4645:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3644, "length": null, "nodeType": "ArrayTypeName", "src": "4645:9:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3648, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 3700, "src": "4693:25:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 3646, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4693:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 3647, "length": null, "nodeType": "ArrayTypeName", "src": "4693:7:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "4595:129:33"}, "returnParameters": {"id": 3655, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3654, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 3700, "src": "4803:47:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3652, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "4803:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 3653, "length": null, "nodeType": "ArrayTypeName", "src": "4803:28:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}, "value": null, "visibility": "internal"}], "src": "4802:49:33"}, "scope": 4079, "src": "4564:669:33", "stateMutability": "payable", "superFunction": 7973, "visibility": "public"}, {"body": {"id": 3771, "nodeType": "Block", "src": "6064:958:33", "statements": [{"assignments": [3716], "declarations": [{"constant": false, "id": 3716, "name": "ordersLength", "nodeType": "VariableDeclaration", "scope": 3771, "src": "6074:20:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3715, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6074:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3719, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3717, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3703, "src": "6097:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6097:13:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "6074:36:33"}, {"body": {"id": 3767, "nodeType": "Block", "src": "6164:824:33", "statements": [{"assignments": [3731], "declarations": [{"constant": false, "id": 3731, "name": "remainingTakerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 3767, "src": "6247:37:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3730, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6247:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3737, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3734, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3713, "src": "6316:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3735, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "6316:34:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 3732, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3705, "src": "6287:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "6287:28:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 3736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6287:64:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "6247:104:33"}, {"assignments": [3741], "declarations": [{"constant": false, "id": 3741, "name": "singleFillResults", "nodeType": "VariableDeclaration", "scope": 3767, "src": "6432:51:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 3740, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "6432:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "id": 3751, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3743, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3703, "src": "6521:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3745, "indexExpression": {"argumentTypes": null, "id": 3744, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3721, "src": "6528:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6521:9:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 3746, "name": "remainingTakerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3731, "src": "6548:29:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3747, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3708, "src": "6595:10:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 3749, "indexExpression": {"argumentTypes": null, "id": 3748, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3721, "src": "6606:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6595:13:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}], "id": 3742, "name": "_fillOrderNoThrow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4078, "src": "6486:17:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,bytes memory) returns (struct LibFillResults.FillResults memory)"}}, "id": 3750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6486:136:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "VariableDeclarationStatement", "src": "6432:190:33"}, {"expression": {"argumentTypes": null, "id": 3758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 3752, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3713, "src": "6707:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3755, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3713, "src": "6751:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, {"argumentTypes": null, "id": 3756, "name": "singleFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3741, "src": "6764:17:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}, {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}], "expression": {"argumentTypes": null, "id": 3753, "name": "LibFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10639, "src": "6721:14:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibFillResults_$10639_$", "typeString": "type(library LibFillResults)"}}, "id": 3754, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "addFillResults", "nodeType": "MemberAccess", "referencedDeclaration": 10306, "src": "6721:29:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_FillResults_$9983_memory_ptr_$_t_struct$_FillResults_$9983_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibFillResults.FillResults memory,struct LibFillResults.FillResults memory) pure returns (struct LibFillResults.FillResults memory)"}}, "id": 3757, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6721:61:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "6707:75:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3759, "nodeType": "ExpressionStatement", "src": "6707:75:33"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3763, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3760, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3713, "src": "6880:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3761, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "6880:34:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "id": 3762, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3705, "src": "6918:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6880:58:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3766, "nodeType": "IfStatement", "src": "6876:102:33", "trueBody": {"id": 3765, "nodeType": "Block", "src": "6940:38:33", "statements": [{"id": 3764, "nodeType": "Break", "src": "6958:5:33"}]}}]}, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3726, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3724, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3721, "src": "6140:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 3725, "name": "ordersLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3716, "src": "6145:12:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6140:17:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3768, "initializationExpression": {"assignments": [3721], "declarations": [{"constant": false, "id": 3721, "name": "i", "nodeType": "VariableDeclaration", "scope": 3768, "src": "6125:9:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3720, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6125:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3723, "initialValue": {"argumentTypes": null, "hexValue": "30", "id": 3722, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6137:1:33", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "6125:13:33"}, "loopExpression": {"expression": {"argumentTypes": null, "id": 3728, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "6159:3:33", "subExpression": {"argumentTypes": null, "id": 3727, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3721, "src": "6159:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3729, "nodeType": "ExpressionStatement", "src": "6159:3:33"}, "nodeType": "ForStatement", "src": "6120:868:33"}, {"expression": {"argumentTypes": null, "id": 3769, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3713, "src": "7004:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "functionReturnParameters": 3714, "id": 3770, "nodeType": "Return", "src": "6997:18:33"}]}, "documentation": "@dev Executes multiple calls of fillOrder until total amount of takerAsset is sold by taker.\n If any fill reverts, the error is caught and ignored.\n NOTE: This function does not enforce that the takerAsset is the same for each order.\n @param orders Array of order specifications.\n @param takerAssetFillAmount Desired amount of takerAsset to sell.\n @param signatures Proofs that orders have been signed by makers.\n @return fillResults Amounts filled and fees paid by makers and taker.", "id": 3772, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 3711, "modifierName": {"argumentTypes": null, "id": 3710, "name": "disableRefundUntilEnd", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11259, "src": "5974:21:33", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "5974:21:33"}], "name": "marketSellOrdersNoThrow", "nodeType": "FunctionDefinition", "parameters": {"id": 3709, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3703, "name": "orders", "nodeType": "VariableDeclaration", "scope": 3772, "src": "5825:30:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3701, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "5825:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 3702, "length": null, "nodeType": "ArrayTypeName", "src": "5825:16:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3705, "name": "takerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 3772, "src": "5865:28:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3704, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5865:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3708, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 3772, "src": "5903:25:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 3706, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5903:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 3707, "length": null, "nodeType": "ArrayTypeName", "src": "5903:7:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "5815:119:33"}, "returnParameters": {"id": 3714, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3713, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 3772, "src": "6013:45:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 3712, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "6013:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "6012:47:33"}, "scope": 4079, "src": "5783:1239:33", "stateMutability": "payable", "superFunction": 7986, "visibility": "public"}, {"body": {"id": 3858, "nodeType": "Block", "src": "7853:1372:33", "statements": [{"assignments": [3788], "declarations": [{"constant": false, "id": 3788, "name": "ordersLength", "nodeType": "VariableDeclaration", "scope": 3858, "src": "7863:20:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3787, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7863:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3791, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3789, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3775, "src": "7886:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7886:13:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "7863:36:33"}, {"body": {"id": 3854, "nodeType": "Block", "src": "7953:1238:33", "statements": [{"assignments": [3803], "declarations": [{"constant": false, "id": 3803, "name": "remainingMakerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 3854, "src": "8035:37:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3802, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8035:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3809, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3806, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3785, "src": "8104:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3807, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "8104:34:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 3804, "name": "makerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3777, "src": "8075:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "8075:28:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 3808, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8075:64:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "8035:104:33"}, {"assignments": [3811], "declarations": [{"constant": false, "id": 3811, "name": "remainingTakerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 3854, "src": "8335:37:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3810, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8335:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3824, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3814, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3775, "src": "8421:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3816, "indexExpression": {"argumentTypes": null, "id": 3815, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3793, "src": "8428:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8421:9:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}, "id": 3817, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10946, "src": "8421:26:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3818, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3775, "src": "8465:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3820, "indexExpression": {"argumentTypes": null, "id": 3819, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3793, "src": "8472:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8465:9:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}, "id": 3821, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 10944, "src": "8465:26:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 3822, "name": "remainingMakerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3803, "src": "8509:29:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 3812, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10917, "src": "8375:7:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$10917_$", "typeString": "type(library LibMath)"}}, "id": 3813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getPartialAmountCeil", "nodeType": "MemberAccess", "referencedDeclaration": 10791, "src": "8375:28:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 3823, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8375:177:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "8335:217:33"}, {"assignments": [3828], "declarations": [{"constant": false, "id": 3828, "name": "singleFillResults", "nodeType": "VariableDeclaration", "scope": 3854, "src": "8633:51:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 3827, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "8633:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "id": 3838, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3830, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3775, "src": "8722:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3832, "indexExpression": {"argumentTypes": null, "id": 3831, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3793, "src": "8729:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8722:9:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 3833, "name": "remainingTakerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3811, "src": "8749:29:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3834, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3780, "src": "8796:10:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}, "id": 3836, "indexExpression": {"argumentTypes": null, "id": 3835, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3793, "src": "8807:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8796:13:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}], "id": 3829, "name": "_fillOrderNoThrow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4078, "src": "8687:17:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,bytes memory) returns (struct LibFillResults.FillResults memory)"}}, "id": 3837, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8687:136:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "VariableDeclarationStatement", "src": "8633:190:33"}, {"expression": {"argumentTypes": null, "id": 3845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 3839, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3785, "src": "8908:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3842, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3785, "src": "8952:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, {"argumentTypes": null, "id": 3843, "name": "singleFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3828, "src": "8965:17:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}, {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}], "expression": {"argumentTypes": null, "id": 3840, "name": "LibFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10639, "src": "8922:14:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibFillResults_$10639_$", "typeString": "type(library LibFillResults)"}}, "id": 3841, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "addFillResults", "nodeType": "MemberAccess", "referencedDeclaration": 10306, "src": "8922:29:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_FillResults_$9983_memory_ptr_$_t_struct$_FillResults_$9983_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibFillResults.FillResults memory,struct LibFillResults.FillResults memory) pure returns (struct LibFillResults.FillResults memory)"}}, "id": 3844, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8922:61:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "8908:75:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3846, "nodeType": "ExpressionStatement", "src": "8908:75:33"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3850, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3847, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3785, "src": "9083:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3848, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "9083:34:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "id": 3849, "name": "makerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3777, "src": "9121:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9083:58:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3853, "nodeType": "IfStatement", "src": "9079:102:33", "trueBody": {"id": 3852, "nodeType": "Block", "src": "9143:38:33", "statements": [{"id": 3851, "nodeType": "Break", "src": "9161:5:33"}]}}]}, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3798, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3796, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3793, "src": "7929:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 3797, "name": "ordersLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3788, "src": "7934:12:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7929:17:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3855, "initializationExpression": {"assignments": [3793], "declarations": [{"constant": false, "id": 3793, "name": "i", "nodeType": "VariableDeclaration", "scope": 3855, "src": "7914:9:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3792, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7914:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3795, "initialValue": {"argumentTypes": null, "hexValue": "30", "id": 3794, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7926:1:33", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "7914:13:33"}, "loopExpression": {"expression": {"argumentTypes": null, "id": 3800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "7948:3:33", "subExpression": {"argumentTypes": null, "id": 3799, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3793, "src": "7948:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3801, "nodeType": "ExpressionStatement", "src": "7948:3:33"}, "nodeType": "ForStatement", "src": "7909:1282:33"}, {"expression": {"argumentTypes": null, "id": 3856, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3785, "src": "9207:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "functionReturnParameters": 3786, "id": 3857, "nodeType": "Return", "src": "9200:18:33"}]}, "documentation": "@dev Executes multiple calls of fillOrder until total amount of makerAsset is bought by taker.\n If any fill reverts, the error is caught and ignored.\n NOTE: This function does not enforce that the makerAsset is the same for each order.\n @param orders Array of order specifications.\n @param makerAssetFillAmount Desired amount of makerAsset to buy.\n @param signatures Proofs that orders have been signed by makers.\n @return fillResults Amounts filled and fees paid by makers and taker.", "id": 3859, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 3783, "modifierName": {"argumentTypes": null, "id": 3782, "name": "disableRefundUntilEnd", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11259, "src": "7763:21:33", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "7763:21:33"}], "name": "marketBuyOrdersNoThrow", "nodeType": "FunctionDefinition", "parameters": {"id": 3781, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3775, "name": "orders", "nodeType": "VariableDeclaration", "scope": 3859, "src": "7614:30:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3773, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "7614:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 3774, "length": null, "nodeType": "ArrayTypeName", "src": "7614:16:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3777, "name": "makerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 3859, "src": "7654:28:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3776, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7654:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3780, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 3859, "src": "7692:25:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 3778, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7692:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 3779, "length": null, "nodeType": "ArrayTypeName", "src": "7692:7:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "7604:119:33"}, "returnParameters": {"id": 3786, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3785, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 3859, "src": "7802:45:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 3784, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "7802:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "7801:47:33"}, "scope": 4079, "src": "7573:1652:33", "stateMutability": "payable", "superFunction": 7999, "visibility": "public"}, {"body": {"id": 3900, "nodeType": "Block", "src": "9958:454:33", "statements": [{"expression": {"argumentTypes": null, "id": 3878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 3872, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3870, "src": "9968:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3874, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3862, "src": "10006:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, {"argumentTypes": null, "id": 3875, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3864, "src": "10014:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 3876, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3867, "src": "10036:10:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}], "id": 3873, "name": "marketSellOrdersNoThrow", "nodeType": "Identifier", "overloadedDeclarations": [3772], "referencedDeclaration": 3772, "src": "9982:23:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_bytes_memory_$dyn_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory[] memory,uint256,bytes memory[] memory) returns (struct LibFillResults.FillResults memory)"}}, "id": 3877, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9982:65:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "9968:79:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3879, "nodeType": "ExpressionStatement", "src": "9968:79:33"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3880, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3870, "src": "10061:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3881, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "10061:34:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "id": 3882, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3864, "src": "10098:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10061:57:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3899, "nodeType": "IfStatement", "src": "10057:349:33", "trueBody": {"id": 3898, "nodeType": "Block", "src": "10120:286:33", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3889, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "10215:21:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3890, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "IncompleteFillErrorCode", "nodeType": "MemberAccess", "referencedDeclaration": 8767, "src": "10215:45:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_IncompleteFillErrorCode_$8767_$", "typeString": "type(enum LibExchangeRichErrors.IncompleteFillErrorCode)"}}, "id": 3891, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INCOMPLETE_MARKET_SELL_ORDERS", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10215:75:33", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}}, {"argumentTypes": null, "id": 3892, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3864, "src": "10308:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3893, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3870, "src": "10346:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3894, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "10346:34:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 3887, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "10156:21:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3888, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "IncompleteFillError", "nodeType": "MemberAccess", "referencedDeclaration": 9315, "src": "10156:41:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_IncompleteFillErrorCode_$8767_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.IncompleteFillErrorCode,uint256,uint256) pure returns (bytes memory)"}}, "id": 3895, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10156:238:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3884, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "10134:13:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 3886, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "10134:21:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 3896, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10134:261:33", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3897, "nodeType": "ExpressionStatement", "src": "10134:261:33"}]}}]}, "documentation": "@dev Calls marketSellOrdersNoThrow then reverts if < takerAssetFillAmount has been sold.\n NOTE: This function does not enforce that the takerAsset is the same for each order.\n @param orders Array of order specifications.\n @param takerAssetFillAmount Minimum amount of takerAsset to sell.\n @param signatures Proofs that orders have been signed by makers.\n @return fillResults Amounts filled and fees paid by makers and taker.", "id": 3901, "implemented": true, "kind": "function", "modifiers": [], "name": "marketSellOrdersFillOrKill", "nodeType": "FunctionDefinition", "parameters": {"id": 3868, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3862, "name": "orders", "nodeType": "VariableDeclaration", "scope": 3901, "src": "9749:30:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3860, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "9749:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 3861, "length": null, "nodeType": "ArrayTypeName", "src": "9749:16:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3864, "name": "takerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 3901, "src": "9789:28:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3863, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9789:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3867, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 3901, "src": "9827:25:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 3865, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9827:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 3866, "length": null, "nodeType": "ArrayTypeName", "src": "9827:7:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "9739:119:33"}, "returnParameters": {"id": 3871, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3870, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 3901, "src": "9907:45:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 3869, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "9907:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "9906:47:33"}, "scope": 4079, "src": "9704:708:33", "stateMutability": "payable", "superFunction": 8012, "visibility": "public"}, {"body": {"id": 3942, "nodeType": "Block", "src": "11144:452:33", "statements": [{"expression": {"argumentTypes": null, "id": 3920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 3914, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3912, "src": "11154:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3916, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3904, "src": "11191:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, {"argumentTypes": null, "id": 3917, "name": "makerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3906, "src": "11199:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 3918, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3909, "src": "11221:10:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory"}], "id": 3915, "name": "marketBuyOrdersNoThrow", "nodeType": "Identifier", "overloadedDeclarations": [3859], "referencedDeclaration": 3859, "src": "11168:22:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_bytes_memory_$dyn_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory[] memory,uint256,bytes memory[] memory) returns (struct LibFillResults.FillResults memory)"}}, "id": 3919, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11168:64:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "11154:78:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3921, "nodeType": "ExpressionStatement", "src": "11154:78:33"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3925, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3922, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3912, "src": "11246:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3923, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "11246:34:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "id": 3924, "name": "makerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3906, "src": "11283:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11246:57:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 3941, "nodeType": "IfStatement", "src": "11242:348:33", "trueBody": {"id": 3940, "nodeType": "Block", "src": "11305:285:33", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3931, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "11400:21:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3932, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "IncompleteFillErrorCode", "nodeType": "MemberAccess", "referencedDeclaration": 8767, "src": "11400:45:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_IncompleteFillErrorCode_$8767_$", "typeString": "type(enum LibExchangeRichErrors.IncompleteFillErrorCode)"}}, "id": 3933, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INCOMPLETE_MARKET_BUY_ORDERS", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11400:74:33", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}}, {"argumentTypes": null, "id": 3934, "name": "makerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3906, "src": "11492:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3935, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3912, "src": "11530:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3936, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9974, "src": "11530:34:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 3929, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "11341:21:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 3930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "IncompleteFillError", "nodeType": "MemberAccess", "referencedDeclaration": 9315, "src": "11341:41:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_IncompleteFillErrorCode_$8767_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.IncompleteFillErrorCode,uint256,uint256) pure returns (bytes memory)"}}, "id": 3937, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11341:237:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3926, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "11319:13:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 3928, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "11319:21:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 3938, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11319:260:33", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3939, "nodeType": "ExpressionStatement", "src": "11319:260:33"}]}}]}, "documentation": "@dev Calls marketBuyOrdersNoThrow then reverts if < makerAssetFillAmount has been bought.\n NOTE: This function does not enforce that the makerAsset is the same for each order.\n @param orders Array of order specifications.\n @param makerAssetFillAmount Minimum amount of makerAsset to buy.\n @param signatures Proofs that orders have been signed by makers.\n @return fillResults Amounts filled and fees paid by makers and taker.", "id": 3943, "implemented": true, "kind": "function", "modifiers": [], "name": "marketBuyOrdersFillOrKill", "nodeType": "FunctionDefinition", "parameters": {"id": 3910, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3904, "name": "orders", "nodeType": "VariableDeclaration", "scope": 3943, "src": "10935:30:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3902, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "10935:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 3903, "length": null, "nodeType": "ArrayTypeName", "src": "10935:16:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3906, "name": "makerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 3943, "src": "10975:28:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3905, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10975:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3909, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 3943, "src": "11013:25:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 3907, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11013:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 3908, "length": null, "nodeType": "ArrayTypeName", "src": "11013:7:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "10925:119:33"}, "returnParameters": {"id": 3913, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3912, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 3943, "src": "11093:45:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 3911, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "11093:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "11092:47:33"}, "scope": 4079, "src": "10891:705:33", "stateMutability": "payable", "superFunction": 8025, "visibility": "public"}, {"body": {"id": 3974, "nodeType": "Block", "src": "11838:154:33", "statements": [{"assignments": [3952], "declarations": [{"constant": false, "id": 3952, "name": "ordersLength", "nodeType": "VariableDeclaration", "scope": 3974, "src": "11848:20:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3951, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11848:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3955, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3953, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3946, "src": "11871:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3954, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11871:13:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "11848:36:33"}, {"body": {"id": 3972, "nodeType": "Block", "src": "11938:48:33", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 3967, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3946, "src": "11965:6:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order memory[] memory"}}, "id": 3969, "indexExpression": {"argumentTypes": null, "id": 3968, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3957, "src": "11972:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11965:9:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory", "typeString": "struct LibOrder.Order memory"}], "id": 3966, "name": "_cancelOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 630, "src": "11952:12:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$returns$__$", "typeString": "function (struct LibOrder.Order memory)"}}, "id": 3970, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11952:23:33", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3971, "nodeType": "ExpressionStatement", "src": "11952:23:33"}]}, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 3960, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3957, "src": "11914:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 3961, "name": "ordersLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3952, "src": "11919:12:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11914:17:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3973, "initializationExpression": {"assignments": [3957], "declarations": [{"constant": false, "id": 3957, "name": "i", "nodeType": "VariableDeclaration", "scope": 3973, "src": "11899:9:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3956, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11899:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 3959, "initialValue": {"argumentTypes": null, "hexValue": "30", "id": 3958, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11911:1:33", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "11899:13:33"}, "loopExpression": {"expression": {"argumentTypes": null, "id": 3964, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "11933:3:33", "subExpression": {"argumentTypes": null, "id": 3963, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3957, "src": "11933:1:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3965, "nodeType": "ExpressionStatement", "src": "11933:3:33"}, "nodeType": "ForStatement", "src": "11894:92:33"}]}, "documentation": "@dev Executes multiple calls of cancelOrder.\n @param orders Array of order specifications.", "id": 3975, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 3949, "modifierName": {"argumentTypes": null, "id": 3948, "name": "refundFinalBalanceNoReentry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11243, "src": "11806:27:33", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "11806:27:33"}], "name": "batchCancelOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 3947, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3946, "name": "orders", "nodeType": "VariableDeclaration", "scope": 3975, "src": "11735:30:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 3944, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "11735:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 3945, "length": null, "nodeType": "ArrayTypeName", "src": "11735:16:33", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}], "src": "11734:32:33"}, "returnParameters": {"id": 3950, "nodeType": "ParameterList", "parameters": [], "src": "11838:0:33"}, "scope": 4079, "src": "11708:284:33", "stateMutability": "payable", "superFunction": 8031, "visibility": "public"}, {"body": {"id": 4016, "nodeType": "Block", "src": "12529:506:33", "statements": [{"expression": {"argumentTypes": null, "id": 3992, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 3986, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3984, "src": "12539:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 3988, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3977, "src": "12577:5:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 3989, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3979, "src": "12596:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 3990, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3981, "src": "12630:9:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 3987, "name": "_fillOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "12553:10:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,bytes memory) returns (struct LibFillResults.FillResults memory)"}}, "id": 3991, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12553:96:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "12539:110:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3993, "nodeType": "ExpressionStatement", "src": "12539:110:33"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 3994, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3984, "src": "12663:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 3995, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "12663:34:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 3996, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3979, "src": "12701:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12663:58:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 4013, "nodeType": "IfStatement", "src": "12659:342:33", "trueBody": {"id": 4012, "nodeType": "Block", "src": "12723:278:33", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4003, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "12818:21:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 4004, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "IncompleteFillErrorCode", "nodeType": "MemberAccess", "referencedDeclaration": 8767, "src": "12818:45:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_IncompleteFillErrorCode_$8767_$", "typeString": "type(enum LibExchangeRichErrors.IncompleteFillErrorCode)"}}, "id": 4005, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "INCOMPLETE_FILL_ORDER", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12818:67:33", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}}, {"argumentTypes": null, "id": 4006, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3979, "src": "12903:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4007, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3984, "src": "12941:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 4008, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 9976, "src": "12941:34:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 4001, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "12759:21:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 4002, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "IncompleteFillError", "nodeType": "MemberAccess", "referencedDeclaration": 9315, "src": "12759:41:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_IncompleteFillErrorCode_$8767_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibExchangeRichErrors.IncompleteFillErrorCode,uint256,uint256) pure returns (bytes memory)"}}, "id": 4009, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12759:230:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 3998, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "12737:13:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 4000, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "12737:21:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 4010, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12737:253:33", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4011, "nodeType": "ExpressionStatement", "src": "12737:253:33"}]}}, {"expression": {"argumentTypes": null, "id": 4014, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3984, "src": "13017:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "functionReturnParameters": 3985, "id": 4015, "nodeType": "Return", "src": "13010:18:33"}]}, "documentation": "@dev Fills the input order. Reverts if exact takerAssetFillAmount not filled.\n @param order Order struct containing order specifications.\n @param takerAssetFillAmount Desired amount of takerAsset to sell.\n @param fillResults ignature Proof that order has been created by maker.", "id": 4017, "implemented": true, "kind": "function", "modifiers": [], "name": "_fillOrKillOrder", "nodeType": "FunctionDefinition", "parameters": {"id": 3982, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3977, "name": "order", "nodeType": "VariableDeclaration", "scope": 4017, "src": "12340:27:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 3976, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "12340:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3979, "name": "takerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 4017, "src": "12377:28:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3978, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12377:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 3981, "name": "signature", "nodeType": "VariableDeclaration", "scope": 4017, "src": "12415:22:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3980, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12415:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "12330:113:33"}, "returnParameters": {"id": 3985, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3984, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 4017, "src": "12478:45:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 3983, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "12478:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "12477:47:33"}, "scope": 4079, "src": "12305:730:33", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4077, "nodeType": "Block", "src": "13681:630:33", "statements": [{"assignments": [4029], "declarations": [{"constant": false, "id": 4029, "name": "fillOrderCalldata", "nodeType": "VariableDeclaration", "scope": 4077, "src": "13738:30:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4028, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13738:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 4043, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 4034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13829:1:33", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 4033, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "13821:7:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 4035, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13821:10:33", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}], "id": 4032, "name": "IExchangeCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7656, "src": "13807:13:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IExchangeCore_$7656_$", "typeString": "type(contract IExchangeCore)"}}, "id": 4036, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13807:25:33", "typeDescriptions": {"typeIdentifier": "t_contract$_IExchangeCore_$7656", "typeString": "contract IExchangeCore"}}, "id": 4037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "fillOrder", "nodeType": "MemberAccess", "referencedDeclaration": 7643, "src": "13807:35:33", "typeDescriptions": {"typeIdentifier": "t_function_external_payable$_t_struct$_Order_$10963_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_FillResults_$9983_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,bytes memory) payable external returns (struct LibFillResults.FillResults memory)"}}, "id": 4038, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "selector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13807:44:33", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4039, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4019, "src": "13865:5:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 4040, "name": "takerAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4021, "src": "13884:20:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 4041, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4023, "src": "13918:9:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 4030, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "13771:3:33", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4031, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13771:22:33", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4042, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13771:166:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "13738:199:33"}, {"assignments": [4045, 4047], "declarations": [{"constant": false, "id": 4045, "name": "didSucceed", "nodeType": "VariableDeclaration", "scope": 4077, "src": "13949:15:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4044, "name": "bool", "nodeType": "ElementaryTypeName", "src": "13949:4:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4047, "name": "returnData", "nodeType": "VariableDeclaration", "scope": 4077, "src": "13966:23:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4046, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13966:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 4054, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4052, "name": "fillOrderCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4029, "src": "14020:17:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4049, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12189, "src": "14001:4:33", "typeDescriptions": {"typeIdentifier": "t_contract$_MixinWrapperFunctions_$4079", "typeString": "contract MixinWrapperFunctions"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_MixinWrapperFunctions_$4079", "typeString": "contract MixinWrapperFunctions"}], "id": 4048, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "13993:7:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 4050, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13993:13:33", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4051, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "delegatecall", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13993:26:33", "typeDescriptions": {"typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) returns (bool,bytes memory)"}}, "id": 4053, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13993:45:33", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "13948:90:33"}, {"condition": {"argumentTypes": null, "id": 4055, "name": "didSucceed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4045, "src": "14052:10:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 4074, "nodeType": "IfStatement", "src": "14048:153:33", "trueBody": {"id": 4073, "nodeType": "Block", "src": "14064:137:33", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4057, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4047, "src": "14085:10:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 4058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14085:17:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "313630", "id": 4059, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14106:3:33", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_160_by_1", "typeString": "int_const 160"}, "value": "160"}, "src": "14085:24:33", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 4056, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12080, "src": "14078:6:33", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 4061, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14078:32:33", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4062, "nodeType": "ExpressionStatement", "src": "14078:32:33"}, {"expression": {"argumentTypes": null, "id": 4071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 4063, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4026, "src": "14124:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4066, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4047, "src": "14149:10:33", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4067, "name": "LibFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10639, "src": "14162:14:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibFillResults_$10639_$", "typeString": "type(library LibFillResults)"}}, "id": 4068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "FillResults", "nodeType": "MemberAccess", "referencedDeclaration": 9983, "src": "14162:26:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_FillResults_$9983_storage_ptr_$", "typeString": "type(struct LibFillResults.FillResults storage pointer)"}}], "id": 4069, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "14161:28:33", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_FillResults_$9983_storage_ptr_$", "typeString": "type(struct LibFillResults.FillResults storage pointer)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_type$_t_struct$_FillResults_$9983_storage_ptr_$", "typeString": "type(struct LibFillResults.FillResults storage pointer)"}], "expression": {"argumentTypes": null, "id": 4064, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "14138:3:33", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4065, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14138:10:33", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 4070, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14138:52:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "src": "14124:66:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 4072, "nodeType": "ExpressionStatement", "src": "14124:66:33"}]}}, {"expression": {"argumentTypes": null, "id": 4075, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4026, "src": "14293:11:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "functionReturnParameters": 4027, "id": 4076, "nodeType": "Return", "src": "14286:18:33"}]}, "documentation": "@dev Fills the input order.\n Returns a null FillResults instance if the transaction would otherwise revert.\n @param order Order struct containing order specifications.\n @param takerAssetFillAmount Desired amount of takerAsset to sell.\n @param signature Proof that order has been created by maker.\n @return fillResults Amounts filled and fees paid by maker and taker.", "id": 4078, "implemented": true, "kind": "function", "modifiers": [], "name": "_fillOrderNoThrow", "nodeType": "FunctionDefinition", "parameters": {"id": 4024, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4019, "name": "order", "nodeType": "VariableDeclaration", "scope": 4078, "src": "13492:27:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 4018, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "13492:14:33", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4021, "name": "takerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 4078, "src": "13529:28:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4020, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13529:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4023, "name": "signature", "nodeType": "VariableDeclaration", "scope": 4078, "src": "13567:22:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4022, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13567:5:33", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "13482:113:33"}, "returnParameters": {"id": 4027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4026, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 4078, "src": "13630:45:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 4025, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "13630:26:33", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "13629:47:33"}, "scope": 4079, "src": "13456:855:33", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}], "scope": 4080, "src": "1161:13152:33"}], "src": "580:13734:33"}, "id": 33}, "contracts/exchange/contracts-erc20/contracts/src/interfaces/IERC20Token.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-erc20/contracts/src/interfaces/IERC20Token.sol", "exportedSymbols": {"IERC20Token": [4148]}, "id": 4149, "nodeType": "SourceUnit", "nodes": [{"id": 4081, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:34"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 4148, "linearizedBaseContracts": [4148], "name": "IERC20Token", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": null, "id": 4089, "name": "Transfer", "nodeType": "EventDefinition", "parameters": {"id": 4088, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4083, "indexed": true, "name": "_from", "nodeType": "VariableDeclaration", "scope": 4089, "src": "707:21:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4082, "name": "address", "nodeType": "ElementaryTypeName", "src": "707:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4085, "indexed": true, "name": "_to", "nodeType": "VariableDeclaration", "scope": 4089, "src": "738:19:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4084, "name": "address", "nodeType": "ElementaryTypeName", "src": "738:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4087, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", "scope": 4089, "src": "767:14:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4086, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "767:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "697:90:34"}, "src": "683:105:34"}, {"anonymous": false, "documentation": null, "id": 4097, "name": "Approval", "nodeType": "EventDefinition", "parameters": {"id": 4096, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4091, "indexed": true, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 4097, "src": "818:22:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4090, "name": "address", "nodeType": "ElementaryTypeName", "src": "818:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4093, "indexed": true, "name": "_spender", "nodeType": "VariableDeclaration", "scope": 4097, "src": "850:24:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4092, "name": "address", "nodeType": "ElementaryTypeName", "src": "850:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4095, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", "scope": 4097, "src": "884:14:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4094, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "884:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "808:96:34"}, "src": "794:111:34"}, {"body": null, "documentation": "@dev send `value` token to `to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return True if transfer was successful", "id": 4106, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "parameters": {"id": 4102, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4099, "name": "_to", "nodeType": "VariableDeclaration", "scope": 4106, "src": "1143:11:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4098, "name": "address", "nodeType": "ElementaryTypeName", "src": "1143:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4101, "name": "_value", "nodeType": "VariableDeclaration", "scope": 4106, "src": "1156:14:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4100, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1156:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1142:29:34"}, "returnParameters": {"id": 4105, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4104, "name": "", "nodeType": "VariableDeclaration", "scope": 4106, "src": "1206:4:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4103, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1206:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "1205:6:34"}, "scope": 4148, "src": "1125:87:34", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev send `value` token to `to` from `from` on the condition it is approved by `from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return True if transfer was successful", "id": 4117, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": {"id": 4113, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4108, "name": "_from", "nodeType": "VariableDeclaration", "scope": 4117, "src": "1546:13:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4107, "name": "address", "nodeType": "ElementaryTypeName", "src": "1546:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4110, "name": "_to", "nodeType": "VariableDeclaration", "scope": 4117, "src": "1569:11:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4109, "name": "address", "nodeType": "ElementaryTypeName", "src": "1569:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4112, "name": "_value", "nodeType": "VariableDeclaration", "scope": 4117, "src": "1590:14:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4111, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1590:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1536:74:34"}, "returnParameters": {"id": 4116, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4115, "name": "", "nodeType": "VariableDeclaration", "scope": 4117, "src": "1645:4:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4114, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1645:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "1644:6:34"}, "scope": 4148, "src": "1515:136:34", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of wei to be approved for transfer\n @return Always true if the call has enough gas to complete execution", "id": 4126, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "parameters": {"id": 4122, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4119, "name": "_spender", "nodeType": "VariableDeclaration", "scope": 4126, "src": "1969:16:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4118, "name": "address", "nodeType": "ElementaryTypeName", "src": "1969:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4121, "name": "_value", "nodeType": "VariableDeclaration", "scope": 4126, "src": "1987:14:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4120, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1987:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1968:34:34"}, "returnParameters": {"id": 4125, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4124, "name": "", "nodeType": "VariableDeclaration", "scope": 4126, "src": "2037:4:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4123, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2037:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "2036:6:34"}, "scope": 4148, "src": "1952:91:34", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Query total supply of token\n @return Total supply of token", "id": 4131, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": {"id": 4127, "nodeType": "ParameterList", "parameters": [], "src": "2148:2:34"}, "returnParameters": {"id": 4130, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4129, "name": "", "nodeType": "VariableDeclaration", "scope": 4131, "src": "2198:7:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4128, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2198:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2197:9:34"}, "scope": 4148, "src": "2128:79:34", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@param _owner The address from which the balance will be retrieved\n @return Balance of owner", "id": 4138, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": {"id": 4134, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4133, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 4138, "src": "2340:14:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4132, "name": "address", "nodeType": "ElementaryTypeName", "src": "2340:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "2339:16:34"}, "returnParameters": {"id": 4137, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4136, "name": "", "nodeType": "VariableDeclaration", "scope": 4138, "src": "2403:7:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4135, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2403:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2402:9:34"}, "scope": 4148, "src": "2321:91:34", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", "id": 4147, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "parameters": {"id": 4143, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4140, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 4147, "src": "2639:14:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4139, "name": "address", "nodeType": "ElementaryTypeName", "src": "2639:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4142, "name": "_spender", "nodeType": "VariableDeclaration", "scope": 4147, "src": "2655:16:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4141, "name": "address", "nodeType": "ElementaryTypeName", "src": "2655:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "2638:34:34"}, "returnParameters": {"id": 4146, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4145, "name": "", "nodeType": "VariableDeclaration", "scope": 4147, "src": "2720:7:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4144, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2720:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2719:9:34"}, "scope": 4148, "src": "2620:109:34", "stateMutability": "view", "superFunction": null, "visibility": "external"}], "scope": 4149, "src": "606:2125:34"}], "src": "580:2152:34"}, "id": 34}, "contracts/exchange/contracts-erc20/contracts/src/interfaces/IEtherToken.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-erc20/contracts/src/interfaces/IEtherToken.sol", "exportedSymbols": {"IEtherToken": [4162]}, "id": 4163, "nodeType": "SourceUnit", "nodes": [{"id": 4150, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:35"}, {"absolutePath": "contracts/exchange/contracts-erc20/contracts/src/interfaces/IERC20Token.sol", "file": "./IERC20Token.sol", "id": 4151, "nodeType": "ImportDirective", "scope": 4163, "sourceUnit": 4149, "src": "605:27:35", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 4152, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4148, "src": "663:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Token_$4148", "typeString": "contract IERC20Token"}}, "id": 4153, "nodeType": "InheritanceSpecifier", "src": "663:11:35"}], "contractDependencies": [4148], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 4162, "linearizedBaseContracts": [4162, 4148], "name": "IEtherToken", "nodeType": "ContractDefinition", "nodes": [{"body": null, "documentation": null, "id": 4156, "implemented": false, "kind": "function", "modifiers": [], "name": "deposit", "nodeType": "FunctionDefinition", "parameters": {"id": 4154, "nodeType": "ParameterList", "parameters": [], "src": "697:2:35"}, "returnParameters": {"id": 4155, "nodeType": "ParameterList", "parameters": [], "src": "730:0:35"}, "scope": 4162, "src": "681:50:35", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": null, "id": 4161, "implemented": false, "kind": "function", "modifiers": [], "name": "withdraw", "nodeType": "FunctionDefinition", "parameters": {"id": 4159, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4158, "name": "amount", "nodeType": "VariableDeclaration", "scope": 4161, "src": "759:14:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4157, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "759:7:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "758:16:35"}, "returnParameters": {"id": 4160, "nodeType": "ParameterList", "parameters": [], "src": "789:0:35"}, "scope": 4162, "src": "741:49:35", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public"}], "scope": 4163, "src": "635:157:35"}], "src": "580:213:35"}, "id": 35}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-exchange-libs/contracts/src/LibEIP712ExchangeDomain.sol", "exportedSymbols": {"LibEIP712ExchangeDomain": [4205]}, "id": 4206, "nodeType": "SourceUnit", "nodes": [{"id": 4164, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:36"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol", "file": "@0x/contracts-utils/contracts/src/LibEIP712.sol", "id": 4165, "nodeType": "ImportDirective", "scope": 4206, "sourceUnit": 11641, "src": "605:57:36", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 4205, "linearizedBaseContracts": [4205], "name": "LibEIP712ExchangeDomain", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 4168, "name": "_EIP712_EXCHANGE_DOMAIN_NAME", "nodeType": "VariableDeclaration", "scope": 4205, "src": "746:69:36", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory", "typeString": "string"}, "typeName": {"id": 4166, "name": "string", "nodeType": "ElementaryTypeName", "src": "746:6:36", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "value": {"argumentTypes": null, "hexValue": "30782050726f746f636f6c", "id": 4167, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "802:13:36", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_f0f24618f4c4be1e62e026fb039a20ef96f4495294817d1027ffaa6d1f70e61e", "typeString": "literal_string \"0x Protocol\""}, "value": "0x Protocol"}, "visibility": "internal"}, {"constant": true, "id": 4171, "name": "_EIP712_EXCHANGE_DOMAIN_VERSION", "nodeType": "VariableDeclaration", "scope": 4205, "src": "866:66:36", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory", "typeString": "string"}, "typeName": {"id": 4169, "name": "string", "nodeType": "ElementaryTypeName", "src": "866:6:36", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "value": {"argumentTypes": null, "hexValue": "332e302e30", "id": 4170, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "925:7:36", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_d7a1ce683065975771bedf401ecab037f4f4c62cc51fefdc8b39dd246ff0343a", "typeString": "literal_string \"3.0.0\""}, "value": "3.0.0"}, "visibility": "internal"}, {"constant": false, "id": 4173, "name": "EIP712_EXCHANGE_DOMAIN_HASH", "nodeType": "VariableDeclaration", "scope": 4205, "src": "1066:42:36", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4172, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1066:7:36", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "public"}, {"body": {"id": 4203, "nodeType": "Block", "src": "1467:371:36", "statements": [{"assignments": [4181], "declarations": [{"constant": false, "id": 4181, "name": "verifyingContractAddress", "nodeType": "VariableDeclaration", "scope": 4203, "src": "1477:32:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4180, "name": "address", "nodeType": "ElementaryTypeName", "src": "1477:7:36", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 4192, "initialValue": {"argumentTypes": null, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 4182, "name": "verifyingContractAddressIfExists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4177, "src": "1512:32:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 4184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1556:1:36", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 4183, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1548:7:36", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 4185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1548:10:36", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "1512:46:36", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"argumentTypes": null, "id": 4190, "name": "verifyingContractAddressIfExists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4177, "src": "1577:32:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4191, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1512:97:36", "trueExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4188, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12199, "src": "1569:4:36", "typeDescriptions": {"typeIdentifier": "t_contract$_LibEIP712ExchangeDomain_$4205", "typeString": "contract LibEIP712ExchangeDomain"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_LibEIP712ExchangeDomain_$4205", "typeString": "contract LibEIP712ExchangeDomain"}], "id": 4187, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1561:7:36", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 4189, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1561:13:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "1477:132:36"}, {"expression": {"argumentTypes": null, "id": 4201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 4193, "name": "EIP712_EXCHANGE_DOMAIN_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4173, "src": "1619:27:36", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4196, "name": "_EIP712_EXCHANGE_DOMAIN_NAME", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4168, "src": "1689:28:36", "typeDescriptions": {"typeIdentifier": "t_string_memory", "typeString": "string memory"}}, {"argumentTypes": null, "id": 4197, "name": "_EIP712_EXCHANGE_DOMAIN_VERSION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4171, "src": "1731:31:36", "typeDescriptions": {"typeIdentifier": "t_string_memory", "typeString": "string memory"}}, {"argumentTypes": null, "id": 4198, "name": "chainId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4175, "src": "1776:7:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 4199, "name": "verifyingContractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4181, "src": "1797:24:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory", "typeString": "string memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 4194, "name": "LibEIP712", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11640, "src": "1649:9:36", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibEIP712_$11640_$", "typeString": "type(library LibEIP712)"}}, "id": 4195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "hashEIP712Domain", "nodeType": "MemberAccess", "referencedDeclaration": 11626, "src": "1649:26:36", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_address_$returns$_t_bytes32_$", "typeString": "function (string memory,string memory,uint256,address) pure returns (bytes32)"}}, "id": 4200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1649:182:36", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "1619:212:36", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 4202, "nodeType": "ExpressionStatement", "src": "1619:212:36"}]}, "documentation": "@param chainId Chain ID of the network this contract is deployed on.\n @param verifyingContractAddressIfExists Address of the verifying contract (null if the address of this contract)", "id": 4204, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": {"id": 4178, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4175, "name": "chainId", "nodeType": "VariableDeclaration", "scope": 4204, "src": "1376:15:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4174, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1376:7:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4177, "name": "verifyingContractAddressIfExists", "nodeType": "VariableDeclaration", "scope": 4204, "src": "1401:40:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4176, "name": "address", "nodeType": "ElementaryTypeName", "src": "1401:7:36", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1366:81:36"}, "returnParameters": {"id": 4179, "nodeType": "ParameterList", "parameters": [], "src": "1467:0:36"}, "scope": 4205, "src": "1354:484:36", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public"}], "scope": 4206, "src": "665:1175:36"}], "src": "580:1261:36"}, "id": 36}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "exportedSymbols": {"LibExchangeRichErrors": [4816]}, "id": 4817, "nodeType": "SourceUnit", "nodes": [{"id": 4207, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:37"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "@0x/contracts-utils/contracts/src/LibRichErrors.sol", "id": 4208, "nodeType": "ImportDirective", "scope": 4817, "sourceUnit": 9873, "src": "605:61:37", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "./LibOrder.sol", "id": 4209, "nodeType": "ImportDirective", "scope": 4817, "sourceUnit": 5929, "src": "667:24:37", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 4816, "linearizedBaseContracts": [4816], "name": "LibExchangeRichErrors", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "LibExchangeRichErrors.AssetProxyDispatchErrorCodes", "id": 4212, "members": [{"id": 4210, "name": "INVALID_ASSET_DATA_LENGTH", "nodeType": "EnumValue", "src": "775:25:37"}, {"id": 4211, "name": "UNKNOWN_ASSET_PROXY", "nodeType": "EnumValue", "src": "810:19:37"}], "name": "AssetProxyDispatchErrorCodes", "nodeType": "EnumDefinition", "src": "731:104:37"}, {"canonicalName": "LibExchangeRichErrors.BatchMatchOrdersErrorCodes", "id": 4217, "members": [{"id": 4213, "name": "ZERO_LEFT_ORDERS", "nodeType": "EnumValue", "src": "883:16:37"}, {"id": 4214, "name": "ZERO_RIGHT_ORDERS", "nodeType": "EnumValue", "src": "909:17:37"}, {"id": 4215, "name": "INVALID_LENGTH_LEFT_SIGNATURES", "nodeType": "EnumValue", "src": "936:30:37"}, {"id": 4216, "name": "INVALID_LENGTH_RIGHT_SIGNATURES", "nodeType": "EnumValue", "src": "976:31:37"}], "name": "BatchMatchOrdersErrorCodes", "nodeType": "EnumDefinition", "src": "841:172:37"}, {"canonicalName": "LibExchangeRichErrors.ExchangeContextErrorCodes", "id": 4221, "members": [{"id": 4218, "name": "INVALID_MAKER", "nodeType": "EnumValue", "src": "1060:13:37"}, {"id": 4219, "name": "INVALID_TAKER", "nodeType": "EnumValue", "src": "1083:13:37"}, {"id": 4220, "name": "INVALID_SENDER", "nodeType": "EnumValue", "src": "1106:14:37"}], "name": "ExchangeContextErrorCodes", "nodeType": "EnumDefinition", "src": "1019:107:37"}, {"canonicalName": "LibExchangeRichErrors.FillErrorCodes", "id": 4226, "members": [{"id": 4222, "name": "INVALID_TAKER_AMOUNT", "nodeType": "EnumValue", "src": "1162:20:37"}, {"id": 4223, "name": "TAKER_OVERPAY", "nodeType": "EnumValue", "src": "1192:13:37"}, {"id": 4224, "name": "OVERFILL", "nodeType": "EnumValue", "src": "1215:8:37"}, {"id": 4225, "name": "INVALID_FILL_PRICE", "nodeType": "EnumValue", "src": "1233:18:37"}], "name": "FillErrorCodes", "nodeType": "EnumDefinition", "src": "1132:125:37"}, {"canonicalName": "LibExchangeRichErrors.SignatureErrorCodes", "id": 4234, "members": [{"id": 4227, "name": "BAD_ORDER_SIGNATURE", "nodeType": "EnumValue", "src": "1298:19:37"}, {"id": 4228, "name": "BAD_TRANSACTION_SIGNATURE", "nodeType": "EnumValue", "src": "1327:25:37"}, {"id": 4229, "name": "INVALID_LENGTH", "nodeType": "EnumValue", "src": "1362:14:37"}, {"id": 4230, "name": "UNSUPPORTED", "nodeType": "EnumValue", "src": "1386:11:37"}, {"id": 4231, "name": "ILLEGAL", "nodeType": "EnumValue", "src": "1407:7:37"}, {"id": 4232, "name": "INAPPROPRIATE_SIGNATURE_TYPE", "nodeType": "EnumValue", "src": "1424:28:37"}, {"id": 4233, "name": "INVALID_SIGNER", "nodeType": "EnumValue", "src": "1462:14:37"}], "name": "SignatureErrorCodes", "nodeType": "EnumDefinition", "src": "1263:219:37"}, {"canonicalName": "LibExchangeRichErrors.TransactionErrorCodes", "id": 4237, "members": [{"id": 4235, "name": "ALREADY_EXECUTED", "nodeType": "EnumValue", "src": "1525:16:37"}, {"id": 4236, "name": "EXPIRED", "nodeType": "EnumValue", "src": "1551:7:37"}], "name": "TransactionErrorCodes", "nodeType": "EnumDefinition", "src": "1488:76:37"}, {"canonicalName": "LibExchangeRichErrors.IncompleteFillErrorCode", "id": 4241, "members": [{"id": 4238, "name": "INCOMPLETE_MARKET_BUY_ORDERS", "nodeType": "EnumValue", "src": "1609:28:37"}, {"id": 4239, "name": "INCOMPLETE_MARKET_SELL_ORDERS", "nodeType": "EnumValue", "src": "1647:29:37"}, {"id": 4240, "name": "INCOMPLETE_FILL_ORDER", "nodeType": "EnumValue", "src": "1686:21:37"}], "name": "IncompleteFillErrorCode", "nodeType": "EnumDefinition", "src": "1570:143:37"}, {"constant": true, "id": 4244, "name": "SIGNATURE_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "1791:70:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4242, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1791:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783765356132333138", "id": 4243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1851:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_2119836440_by_1", "typeString": "int_const 2119836440"}, "value": "0x7e5a2318"}, "visibility": "internal"}, {"constant": true, "id": 4247, "name": "SIGNATURE_VALIDATOR_NOT_APPROVED_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "1948:93:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4245, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1948:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786131356330643036", "id": 4246, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2031:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_2707164422_by_1", "typeString": "int_const 2707164422"}, "value": "0xa15c0d06"}, "visibility": "internal"}, {"constant": true, "id": 4250, "name": "EIP1271_SIGNATURE_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "2125:78:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4248, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2125:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783562643034323864", "id": 4249, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2193:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1540375181_by_1", "typeString": "int_const 1540375181"}, "value": "0x5bd0428d"}, "visibility": "internal"}, {"constant": true, "id": 4253, "name": "SIGNATURE_WALLET_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "2288:77:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4251, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2288:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783162383338386637", "id": 4252, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2355:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_461605111_by_1", "typeString": "int_const 461605111"}, "value": "0x1b8388f7"}, "visibility": "internal"}, {"constant": true, "id": 4256, "name": "ORDER_STATUS_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "2432:73:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4254, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2432:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786664623663613864", "id": 4255, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2495:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4256615053_by_1", "typeString": "int_const 4256615053"}, "value": "0xfdb6ca8d"}, "visibility": "internal"}, {"constant": true, "id": 4259, "name": "EXCHANGE_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "2591:85:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4257, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2591:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786535336337366338", "id": 4258, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2666:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3845945032_by_1", "typeString": "int_const 3845945032"}, "value": "0xe53c76c8"}, "visibility": "internal"}, {"constant": true, "id": 4262, "name": "FILL_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "2736:65:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4260, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2736:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786539346137656430", "id": 4261, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2791:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3913973456_by_1", "typeString": "int_const 3913973456"}, "value": "0xe94a7ed0"}, "visibility": "internal"}, {"constant": true, "id": 4265, "name": "ORDER_EPOCH_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "2877:72:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4263, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2877:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783461643331323735", "id": 4264, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2939:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1255346805_by_1", "typeString": "int_const 1255346805"}, "value": "0x4ad31275"}, "visibility": "internal"}, {"constant": true, "id": 4268, "name": "ASSET_PROXY_EXISTS_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "3022:79:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4266, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3022:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783131633762373230", "id": 4267, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3091:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_298301216_by_1", "typeString": "int_const 298301216"}, "value": "0x11c7b720"}, "visibility": "internal"}, {"constant": true, "id": 4271, "name": "ASSET_PROXY_DISPATCH_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "3181:81:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4269, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3181:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783438383231396136", "id": 4270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3252:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1216485798_by_1", "typeString": "int_const 1216485798"}, "value": "0x488219a6"}, "visibility": "internal"}, {"constant": true, "id": 4274, "name": "ASSET_PROXY_TRANSFER_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "3342:81:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4272, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3342:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783436373834373262", "id": 4273, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3413:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1182287659_by_1", "typeString": "int_const 1182287659"}, "value": "0x4678472b"}, "visibility": "internal"}, {"constant": true, "id": 4277, "name": "NEGATIVE_SPREAD_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "3495:76:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4275, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3495:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786236353535643666", "id": 4276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3561:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3059047791_by_1", "typeString": "int_const 3059047791"}, "value": "0xb6555d6f"}, "visibility": "internal"}, {"constant": true, "id": 4280, "name": "TRANSACTION_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "3638:72:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4278, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3638:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786635393835313834", "id": 4279, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3700:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4120400260_by_1", "typeString": "int_const 4120400260"}, "value": "0xf5985184"}, "visibility": "internal"}, {"constant": true, "id": 4283, "name": "TRANSACTION_EXECUTION_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "3786:82:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4281, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3786:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783230643131663631", "id": 4282, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3858:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_550575969_by_1", "typeString": "int_const 550575969"}, "value": "0x20d11f61"}, "visibility": "internal"}, {"constant": true, "id": 4286, "name": "TRANSACTION_GAS_PRICE_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "3957:82:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4284, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3957:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786132366461633039", "id": 4285, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4029:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_2725096457_by_1", "typeString": "int_const 2725096457"}, "value": "0xa26dac09"}, "visibility": "internal"}, {"constant": true, "id": 4289, "name": "TRANSACTION_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "4122:88:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4287, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4122:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786465633461656466", "id": 4288, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4200:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3737431775_by_1", "typeString": "int_const 3737431775"}, "value": "0xdec4aedf"}, "visibility": "internal"}, {"constant": true, "id": 4292, "name": "INCOMPLETE_FILL_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "4288:76:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4290, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4288:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783138653462313431", "id": 4291, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4354:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_417640769_by_1", "typeString": "int_const 417640769"}, "value": "0x18e4b141"}, "visibility": "internal"}, {"constant": true, "id": 4295, "name": "BATCH_MATCH_ORDERS_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "4428:79:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4293, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4428:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786434303932663466", "id": 4294, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4497:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3557371727_by_1", "typeString": "int_const 3557371727"}, "value": "0xd4092f4f"}, "visibility": "internal"}, {"constant": true, "id": 4298, "name": "PAY_PROTOCOL_FEE_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 4816, "src": "4601:77:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4296, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4601:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783837636231653735", "id": 4297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4668:10:37", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_2278235765_by_1", "typeString": "int_const 2278235765"}, "value": "0x87cb1e75"}, "visibility": "internal"}, {"body": {"id": 4305, "nodeType": "Block", "src": "4821:48:37", "statements": [{"expression": {"argumentTypes": null, "id": 4303, "name": "SIGNATURE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4244, "src": "4838:24:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4302, "id": 4304, "nodeType": "Return", "src": "4831:31:37"}]}, "documentation": null, "id": 4306, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4299, "nodeType": "ParameterList", "parameters": [], "src": "4759:2:37"}, "returnParameters": {"id": 4302, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4301, "name": "", "nodeType": "VariableDeclaration", "scope": 4306, "src": "4809:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4300, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4809:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "4808:8:37"}, "scope": 4816, "src": "4728:141:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4313, "nodeType": "Block", "src": "4988:71:37", "statements": [{"expression": {"argumentTypes": null, "id": 4311, "name": "SIGNATURE_VALIDATOR_NOT_APPROVED_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4247, "src": "5005:47:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4310, "id": 4312, "nodeType": "Return", "src": "4998:54:37"}]}, "documentation": null, "id": 4314, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureValidatorNotApprovedErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4307, "nodeType": "ParameterList", "parameters": [], "src": "4926:2:37"}, "returnParameters": {"id": 4310, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4309, "name": "", "nodeType": "VariableDeclaration", "scope": 4314, "src": "4976:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4308, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4976:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "4975:8:37"}, "scope": 4816, "src": "4875:184:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4321, "nodeType": "Block", "src": "5165:56:37", "statements": [{"expression": {"argumentTypes": null, "id": 4319, "name": "EIP1271_SIGNATURE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4250, "src": "5182:32:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4318, "id": 4320, "nodeType": "Return", "src": "5175:39:37"}]}, "documentation": null, "id": 4322, "implemented": true, "kind": "function", "modifiers": [], "name": "EIP1271SignatureErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4315, "nodeType": "ParameterList", "parameters": [], "src": "5103:2:37"}, "returnParameters": {"id": 4318, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4317, "name": "", "nodeType": "VariableDeclaration", "scope": 4322, "src": "5153:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4316, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5153:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5152:8:37"}, "scope": 4816, "src": "5065:156:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4329, "nodeType": "Block", "src": "5326:55:37", "statements": [{"expression": {"argumentTypes": null, "id": 4327, "name": "SIGNATURE_WALLET_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4253, "src": "5343:31:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4326, "id": 4328, "nodeType": "Return", "src": "5336:38:37"}]}, "documentation": null, "id": 4330, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureWalletErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4323, "nodeType": "ParameterList", "parameters": [], "src": "5264:2:37"}, "returnParameters": {"id": 4326, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4325, "name": "", "nodeType": "VariableDeclaration", "scope": 4330, "src": "5314:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4324, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5314:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5313:8:37"}, "scope": 4816, "src": "5227:154:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4337, "nodeType": "Block", "src": "5482:51:37", "statements": [{"expression": {"argumentTypes": null, "id": 4335, "name": "ORDER_STATUS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4256, "src": "5499:27:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4334, "id": 4336, "nodeType": "Return", "src": "5492:34:37"}]}, "documentation": null, "id": 4338, "implemented": true, "kind": "function", "modifiers": [], "name": "OrderStatusErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4331, "nodeType": "ParameterList", "parameters": [], "src": "5420:2:37"}, "returnParameters": {"id": 4334, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4333, "name": "", "nodeType": "VariableDeclaration", "scope": 4338, "src": "5470:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4332, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5470:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5469:8:37"}, "scope": 4816, "src": "5387:146:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4345, "nodeType": "Block", "src": "5645:63:37", "statements": [{"expression": {"argumentTypes": null, "id": 4343, "name": "EXCHANGE_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4259, "src": "5662:39:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4342, "id": 4344, "nodeType": "Return", "src": "5655:46:37"}]}, "documentation": null, "id": 4346, "implemented": true, "kind": "function", "modifiers": [], "name": "ExchangeInvalidContextErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4339, "nodeType": "ParameterList", "parameters": [], "src": "5583:2:37"}, "returnParameters": {"id": 4342, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4341, "name": "", "nodeType": "VariableDeclaration", "scope": 4346, "src": "5633:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4340, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5633:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5632:8:37"}, "scope": 4816, "src": "5539:169:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4353, "nodeType": "Block", "src": "5802:43:37", "statements": [{"expression": {"argumentTypes": null, "id": 4351, "name": "FILL_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4262, "src": "5819:19:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4350, "id": 4352, "nodeType": "Return", "src": "5812:26:37"}]}, "documentation": null, "id": 4354, "implemented": true, "kind": "function", "modifiers": [], "name": "FillErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4347, "nodeType": "ParameterList", "parameters": [], "src": "5740:2:37"}, "returnParameters": {"id": 4350, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4349, "name": "", "nodeType": "VariableDeclaration", "scope": 4354, "src": "5790:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4348, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5790:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5789:8:37"}, "scope": 4816, "src": "5714:131:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4361, "nodeType": "Block", "src": "5945:50:37", "statements": [{"expression": {"argumentTypes": null, "id": 4359, "name": "ORDER_EPOCH_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4265, "src": "5962:26:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4358, "id": 4360, "nodeType": "Return", "src": "5955:33:37"}]}, "documentation": null, "id": 4362, "implemented": true, "kind": "function", "modifiers": [], "name": "OrderEpochErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4355, "nodeType": "ParameterList", "parameters": [], "src": "5883:2:37"}, "returnParameters": {"id": 4358, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4357, "name": "", "nodeType": "VariableDeclaration", "scope": 4362, "src": "5933:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4356, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "5933:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "5932:8:37"}, "scope": 4816, "src": "5851:144:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4369, "nodeType": "Block", "src": "6101:57:37", "statements": [{"expression": {"argumentTypes": null, "id": 4367, "name": "ASSET_PROXY_EXISTS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4268, "src": "6118:33:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4366, "id": 4368, "nodeType": "Return", "src": "6111:40:37"}]}, "documentation": null, "id": 4370, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyExistsErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4363, "nodeType": "ParameterList", "parameters": [], "src": "6039:2:37"}, "returnParameters": {"id": 4366, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4365, "name": "", "nodeType": "VariableDeclaration", "scope": 4370, "src": "6089:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4364, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6089:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6088:8:37"}, "scope": 4816, "src": "6001:157:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4377, "nodeType": "Block", "src": "6266:59:37", "statements": [{"expression": {"argumentTypes": null, "id": 4375, "name": "ASSET_PROXY_DISPATCH_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4271, "src": "6283:35:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4374, "id": 4376, "nodeType": "Return", "src": "6276:42:37"}]}, "documentation": null, "id": 4378, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyDispatchErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4371, "nodeType": "ParameterList", "parameters": [], "src": "6204:2:37"}, "returnParameters": {"id": 4374, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4373, "name": "", "nodeType": "VariableDeclaration", "scope": 4378, "src": "6254:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4372, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6254:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6253:8:37"}, "scope": 4816, "src": "6164:161:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4385, "nodeType": "Block", "src": "6433:59:37", "statements": [{"expression": {"argumentTypes": null, "id": 4383, "name": "ASSET_PROXY_TRANSFER_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4274, "src": "6450:35:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4382, "id": 4384, "nodeType": "Return", "src": "6443:42:37"}]}, "documentation": null, "id": 4386, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyTransferErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4379, "nodeType": "ParameterList", "parameters": [], "src": "6371:2:37"}, "returnParameters": {"id": 4382, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4381, "name": "", "nodeType": "VariableDeclaration", "scope": 4386, "src": "6421:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4380, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6421:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6420:8:37"}, "scope": 4816, "src": "6331:161:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4393, "nodeType": "Block", "src": "6596:54:37", "statements": [{"expression": {"argumentTypes": null, "id": 4391, "name": "NEGATIVE_SPREAD_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4277, "src": "6613:30:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4390, "id": 4392, "nodeType": "Return", "src": "6606:37:37"}]}, "documentation": null, "id": 4394, "implemented": true, "kind": "function", "modifiers": [], "name": "NegativeSpreadErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4387, "nodeType": "ParameterList", "parameters": [], "src": "6534:2:37"}, "returnParameters": {"id": 4390, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4389, "name": "", "nodeType": "VariableDeclaration", "scope": 4394, "src": "6584:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4388, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6584:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6583:8:37"}, "scope": 4816, "src": "6498:152:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4401, "nodeType": "Block", "src": "6751:50:37", "statements": [{"expression": {"argumentTypes": null, "id": 4399, "name": "TRANSACTION_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4280, "src": "6768:26:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4398, "id": 4400, "nodeType": "Return", "src": "6761:33:37"}]}, "documentation": null, "id": 4402, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4395, "nodeType": "ParameterList", "parameters": [], "src": "6689:2:37"}, "returnParameters": {"id": 4398, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4397, "name": "", "nodeType": "VariableDeclaration", "scope": 4402, "src": "6739:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4396, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6739:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6738:8:37"}, "scope": 4816, "src": "6656:145:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4409, "nodeType": "Block", "src": "6911:60:37", "statements": [{"expression": {"argumentTypes": null, "id": 4407, "name": "TRANSACTION_EXECUTION_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4283, "src": "6928:36:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4406, "id": 4408, "nodeType": "Return", "src": "6921:43:37"}]}, "documentation": null, "id": 4410, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionExecutionErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4403, "nodeType": "ParameterList", "parameters": [], "src": "6849:2:37"}, "returnParameters": {"id": 4406, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4405, "name": "", "nodeType": "VariableDeclaration", "scope": 4410, "src": "6899:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4404, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "6899:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "6898:8:37"}, "scope": 4816, "src": "6807:164:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4417, "nodeType": "Block", "src": "7075:54:37", "statements": [{"expression": {"argumentTypes": null, "id": 4415, "name": "INCOMPLETE_FILL_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4292, "src": "7092:30:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4414, "id": 4416, "nodeType": "Return", "src": "7085:37:37"}]}, "documentation": null, "id": 4418, "implemented": true, "kind": "function", "modifiers": [], "name": "IncompleteFillErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4411, "nodeType": "ParameterList", "parameters": [], "src": "7013:2:37"}, "returnParameters": {"id": 4414, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4413, "name": "", "nodeType": "VariableDeclaration", "scope": 4418, "src": "7063:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4412, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "7063:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "7062:8:37"}, "scope": 4816, "src": "6977:152:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4425, "nodeType": "Block", "src": "7235:57:37", "statements": [{"expression": {"argumentTypes": null, "id": 4423, "name": "BATCH_MATCH_ORDERS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4295, "src": "7252:33:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4422, "id": 4424, "nodeType": "Return", "src": "7245:40:37"}]}, "documentation": null, "id": 4426, "implemented": true, "kind": "function", "modifiers": [], "name": "BatchMatchOrdersErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4419, "nodeType": "ParameterList", "parameters": [], "src": "7173:2:37"}, "returnParameters": {"id": 4422, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4421, "name": "", "nodeType": "VariableDeclaration", "scope": 4426, "src": "7223:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4420, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "7223:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "7222:8:37"}, "scope": 4816, "src": "7135:157:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4433, "nodeType": "Block", "src": "7401:60:37", "statements": [{"expression": {"argumentTypes": null, "id": 4431, "name": "TRANSACTION_GAS_PRICE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4286, "src": "7418:36:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4430, "id": 4432, "nodeType": "Return", "src": "7411:43:37"}]}, "documentation": null, "id": 4434, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionGasPriceErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4427, "nodeType": "ParameterList", "parameters": [], "src": "7339:2:37"}, "returnParameters": {"id": 4430, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4429, "name": "", "nodeType": "VariableDeclaration", "scope": 4434, "src": "7389:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4428, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "7389:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "7388:8:37"}, "scope": 4816, "src": "7298:163:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4441, "nodeType": "Block", "src": "7576:66:37", "statements": [{"expression": {"argumentTypes": null, "id": 4439, "name": "TRANSACTION_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4289, "src": "7593:42:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4438, "id": 4440, "nodeType": "Return", "src": "7586:49:37"}]}, "documentation": null, "id": 4442, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionInvalidContextErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4435, "nodeType": "ParameterList", "parameters": [], "src": "7514:2:37"}, "returnParameters": {"id": 4438, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4437, "name": "", "nodeType": "VariableDeclaration", "scope": 4442, "src": "7564:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4436, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "7564:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "7563:8:37"}, "scope": 4816, "src": "7467:175:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4449, "nodeType": "Block", "src": "7746:55:37", "statements": [{"expression": {"argumentTypes": null, "id": 4447, "name": "PAY_PROTOCOL_FEE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4298, "src": "7763:31:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 4446, "id": 4448, "nodeType": "Return", "src": "7756:38:37"}]}, "documentation": null, "id": 4450, "implemented": true, "kind": "function", "modifiers": [], "name": "PayProtocolFeeErrorSelector", "nodeType": "FunctionDefinition", "parameters": {"id": 4443, "nodeType": "ParameterList", "parameters": [], "src": "7684:2:37"}, "returnParameters": {"id": 4446, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4445, "name": "", "nodeType": "VariableDeclaration", "scope": 4450, "src": "7734:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4444, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "7734:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "7733:8:37"}, "scope": 4816, "src": "7648:153:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4463, "nodeType": "Block", "src": "7959:126:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4459, "name": "BATCH_MATCH_ORDERS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4295, "src": "8012:33:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4460, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4452, "src": "8059:9:37", "typeDescriptions": {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$4217", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$4217", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}], "expression": {"argumentTypes": null, "id": 4457, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "7976:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4458, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7976:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4461, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7976:102:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4456, "id": 4462, "nodeType": "Return", "src": "7969:109:37"}]}, "documentation": null, "id": 4464, "implemented": true, "kind": "function", "modifiers": [], "name": "BatchMatchOrdersError", "nodeType": "FunctionDefinition", "parameters": {"id": 4453, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4452, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 4464, "src": "7851:36:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$4217", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}, "typeName": {"contractScope": null, "id": 4451, "name": "BatchMatchOrdersErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4217, "src": "7851:26:37", "typeDescriptions": {"typeIdentifier": "t_enum$_BatchMatchOrdersErrorCodes_$4217", "typeString": "enum LibExchangeRichErrors.BatchMatchOrdersErrorCodes"}}, "value": null, "visibility": "internal"}], "src": "7841:52:37"}, "returnParameters": {"id": 4456, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4455, "name": "", "nodeType": "VariableDeclaration", "scope": 4464, "src": "7941:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4454, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7941:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "7940:14:37"}, "scope": 4816, "src": "7811:274:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4486, "nodeType": "Block", "src": "8310:185:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4479, "name": "SIGNATURE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4244, "src": "8363:24:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4480, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4466, "src": "8401:9:37", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$4234", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, {"argumentTypes": null, "id": 4481, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4468, "src": "8424:4:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 4482, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4470, "src": "8442:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 4483, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4472, "src": "8469:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_SignatureErrorCodes_$4234", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 4477, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "8327:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4478, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8327:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8327:161:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4476, "id": 4485, "nodeType": "Return", "src": "8320:168:37"}]}, "documentation": null, "id": 4487, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureError", "nodeType": "FunctionDefinition", "parameters": {"id": 4473, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4466, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 4487, "src": "8124:29:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$4234", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, "typeName": {"contractScope": null, "id": 4465, "name": "SignatureErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4234, "src": "8124:19:37", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$4234", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4468, "name": "hash", "nodeType": "VariableDeclaration", "scope": 4487, "src": "8163:12:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4467, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8163:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4470, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 4487, "src": "8185:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4469, "name": "address", "nodeType": "ElementaryTypeName", "src": "8185:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4472, "name": "signature", "nodeType": "VariableDeclaration", "scope": 4487, "src": "8216:22:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4471, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8216:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8114:130:37"}, "returnParameters": {"id": 4476, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4475, "name": "", "nodeType": "VariableDeclaration", "scope": 4487, "src": "8292:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4474, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8292:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8291:14:37"}, "scope": 4816, "src": "8091:404:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4503, "nodeType": "Block", "src": "8681:174:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4498, "name": "SIGNATURE_VALIDATOR_NOT_APPROVED_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4247, "src": "8734:47:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4499, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4489, "src": "8795:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 4500, "name": "validatorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4491, "src": "8822:16:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 4496, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "8698:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4497, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8698:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4501, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8698:150:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4495, "id": 4502, "nodeType": "Return", "src": "8691:157:37"}]}, "documentation": null, "id": 4504, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureValidatorNotApprovedError", "nodeType": "FunctionDefinition", "parameters": {"id": 4492, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4489, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 4504, "src": "8554:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4488, "name": "address", "nodeType": "ElementaryTypeName", "src": "8554:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4491, "name": "validatorAddress", "nodeType": "VariableDeclaration", "scope": 4504, "src": "8585:24:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4490, "name": "address", "nodeType": "ElementaryTypeName", "src": "8585:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "8544:71:37"}, "returnParameters": {"id": 4495, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4494, "name": "", "nodeType": "VariableDeclaration", "scope": 4504, "src": "8663:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4493, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8663:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8662:14:37"}, "scope": 4816, "src": "8501:354:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4526, "nodeType": "Block", "src": "9096:204:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4519, "name": "EIP1271_SIGNATURE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4250, "src": "9149:32:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4520, "name": "verifyingContractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4506, "src": "9195:24:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 4521, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4508, "src": "9233:4:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 4522, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4510, "src": "9251:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 4523, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4512, "src": "9274:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 4517, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "9113:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4518, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9113:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4524, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9113:180:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4516, "id": 4525, "nodeType": "Return", "src": "9106:187:37"}]}, "documentation": null, "id": 4527, "implemented": true, "kind": "function", "modifiers": [], "name": "EIP1271SignatureError", "nodeType": "FunctionDefinition", "parameters": {"id": 4513, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4506, "name": "verifyingContractAddress", "nodeType": "VariableDeclaration", "scope": 4527, "src": "8901:32:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4505, "name": "address", "nodeType": "ElementaryTypeName", "src": "8901:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4508, "name": "data", "nodeType": "VariableDeclaration", "scope": 4527, "src": "8943:17:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4507, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8943:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4510, "name": "signature", "nodeType": "VariableDeclaration", "scope": 4527, "src": "8970:22:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4509, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8970:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4512, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 4527, "src": "9002:22:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4511, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9002:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8891:139:37"}, "returnParameters": {"id": 4516, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4515, "name": "", "nodeType": "VariableDeclaration", "scope": 4527, "src": "9078:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4514, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9078:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9077:14:37"}, "scope": 4816, "src": "8861:439:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4549, "nodeType": "Block", "src": "9524:192:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4542, "name": "SIGNATURE_WALLET_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4253, "src": "9577:31:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4543, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4529, "src": "9622:4:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 4544, "name": "walletAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4531, "src": "9640:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 4545, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4533, "src": "9667:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 4546, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4535, "src": "9690:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 4540, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "9541:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4541, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9541:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4547, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9541:168:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4539, "id": 4548, "nodeType": "Return", "src": "9534:175:37"}]}, "documentation": null, "id": 4550, "implemented": true, "kind": "function", "modifiers": [], "name": "SignatureWalletError", "nodeType": "FunctionDefinition", "parameters": {"id": 4536, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4529, "name": "hash", "nodeType": "VariableDeclaration", "scope": 4550, "src": "9345:12:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4528, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9345:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4531, "name": "walletAddress", "nodeType": "VariableDeclaration", "scope": 4550, "src": "9367:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4530, "name": "address", "nodeType": "ElementaryTypeName", "src": "9367:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4533, "name": "signature", "nodeType": "VariableDeclaration", "scope": 4550, "src": "9398:22:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4532, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9398:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4535, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 4550, "src": "9430:22:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4534, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9430:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9335:123:37"}, "returnParameters": {"id": 4539, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4538, "name": "", "nodeType": "VariableDeclaration", "scope": 4550, "src": "9506:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4537, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9506:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9505:14:37"}, "scope": 4816, "src": "9306:410:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4566, "nodeType": "Block", "src": "9888:145:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4561, "name": "ORDER_STATUS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4256, "src": "9941:27:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4562, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4552, "src": "9982:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 4563, "name": "orderStatus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4554, "src": "10005:11:37", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$5834", "typeString": "enum LibOrder.OrderStatus"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_enum$_OrderStatus_$5834", "typeString": "enum LibOrder.OrderStatus"}], "expression": {"argumentTypes": null, "id": 4559, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "9905:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4560, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9905:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4564, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9905:121:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4558, "id": 4565, "nodeType": "Return", "src": "9898:128:37"}]}, "documentation": null, "id": 4567, "implemented": true, "kind": "function", "modifiers": [], "name": "OrderStatusError", "nodeType": "FunctionDefinition", "parameters": {"id": 4555, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4552, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 4567, "src": "9757:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4551, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9757:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4554, "name": "orderStatus", "nodeType": "VariableDeclaration", "scope": 4567, "src": "9784:32:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$5834", "typeString": "enum LibOrder.OrderStatus"}, "typeName": {"contractScope": null, "id": 4553, "name": "LibOrder.OrderStatus", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5834, "src": "9784:20:37", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$5834", "typeString": "enum LibOrder.OrderStatus"}}, "value": null, "visibility": "internal"}], "src": "9747:75:37"}, "returnParameters": {"id": 4558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4557, "name": "", "nodeType": "VariableDeclaration", "scope": 4567, "src": "9870:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4556, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9870:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9869:14:37"}, "scope": 4816, "src": "9722:311:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4586, "nodeType": "Block", "src": "10251:183:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4580, "name": "EXCHANGE_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4259, "src": "10304:39:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4581, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4569, "src": "10357:9:37", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$4221", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, {"argumentTypes": null, "id": 4582, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4571, "src": "10380:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 4583, "name": "contextAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4573, "src": "10403:14:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$4221", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 4578, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "10268:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4579, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10268:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4584, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10268:159:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4577, "id": 4585, "nodeType": "Return", "src": "10261:166:37"}]}, "documentation": null, "id": 4587, "implemented": true, "kind": "function", "modifiers": [], "name": "ExchangeInvalidContextError", "nodeType": "FunctionDefinition", "parameters": {"id": 4574, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4569, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 4587, "src": "10085:35:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$4221", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}, "typeName": {"contractScope": null, "id": 4568, "name": "ExchangeContextErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4221, "src": "10085:25:37", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$4221", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4571, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 4587, "src": "10130:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4570, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10130:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4573, "name": "contextAddress", "nodeType": "VariableDeclaration", "scope": 4587, "src": "10157:22:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4572, "name": "address", "nodeType": "ElementaryTypeName", "src": "10157:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "10075:110:37"}, "returnParameters": {"id": 4577, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4576, "name": "", "nodeType": "VariableDeclaration", "scope": 4587, "src": "10233:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4575, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10233:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "10232:14:37"}, "scope": 4816, "src": "10039:395:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4603, "nodeType": "Block", "src": "10591:135:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4598, "name": "FILL_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4262, "src": "10644:19:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4599, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4589, "src": "10677:9:37", "typeDescriptions": {"typeIdentifier": "t_enum$_FillErrorCodes_$4226", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}}, {"argumentTypes": null, "id": 4600, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4591, "src": "10700:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_FillErrorCodes_$4226", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 4596, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "10608:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4597, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10608:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4601, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10608:111:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4595, "id": 4602, "nodeType": "Return", "src": "10601:118:37"}]}, "documentation": null, "id": 4604, "implemented": true, "kind": "function", "modifiers": [], "name": "FillError", "nodeType": "FunctionDefinition", "parameters": {"id": 4592, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4589, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 4604, "src": "10468:24:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_FillErrorCodes_$4226", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}, "typeName": {"contractScope": null, "id": 4588, "name": "FillErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4226, "src": "10468:14:37", "typeDescriptions": {"typeIdentifier": "t_enum$_FillErrorCodes_$4226", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4591, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 4604, "src": "10502:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4590, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10502:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "10458:67:37"}, "returnParameters": {"id": 4595, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4594, "name": "", "nodeType": "VariableDeclaration", "scope": 4604, "src": "10573:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4593, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10573:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "10572:14:37"}, "scope": 4816, "src": "10440:286:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4623, "nodeType": "Block", "src": "10924:180:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4617, "name": "ORDER_EPOCH_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4265, "src": "10977:26:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4618, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4606, "src": "11017:12:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 4619, "name": "orderSenderAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4608, "src": "11043:18:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 4620, "name": "currentEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4610, "src": "11075:12:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 4615, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "10941:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4616, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10941:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4621, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10941:156:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4614, "id": 4622, "nodeType": "Return", "src": "10934:163:37"}]}, "documentation": null, "id": 4624, "implemented": true, "kind": "function", "modifiers": [], "name": "OrderEpochError", "nodeType": "FunctionDefinition", "parameters": {"id": 4611, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4606, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 4624, "src": "10766:20:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4605, "name": "address", "nodeType": "ElementaryTypeName", "src": "10766:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4608, "name": "orderSenderAddress", "nodeType": "VariableDeclaration", "scope": 4624, "src": "10796:26:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4607, "name": "address", "nodeType": "ElementaryTypeName", "src": "10796:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4610, "name": "currentEpoch", "nodeType": "VariableDeclaration", "scope": 4624, "src": "10832:20:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4609, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10832:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "10756:102:37"}, "returnParameters": {"id": 4614, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4613, "name": "", "nodeType": "VariableDeclaration", "scope": 4624, "src": "10906:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4612, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10906:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "10905:14:37"}, "scope": 4816, "src": "10732:372:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4640, "nodeType": "Block", "src": "11276:160:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4635, "name": "ASSET_PROXY_EXISTS_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4268, "src": "11329:33:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4636, "name": "assetProxyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4626, "src": "11376:12:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4637, "name": "assetProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4628, "src": "11402:17:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 4633, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "11293:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4634, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11293:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4638, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11293:136:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4632, "id": 4639, "nodeType": "Return", "src": "11286:143:37"}]}, "documentation": null, "id": 4641, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyExistsError", "nodeType": "FunctionDefinition", "parameters": {"id": 4629, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4626, "name": "assetProxyId", "nodeType": "VariableDeclaration", "scope": 4641, "src": "11150:19:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4625, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "11150:6:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4628, "name": "assetProxyAddress", "nodeType": "VariableDeclaration", "scope": 4641, "src": "11179:25:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4627, "name": "address", "nodeType": "ElementaryTypeName", "src": "11179:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "11140:70:37"}, "returnParameters": {"id": 4632, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4631, "name": "", "nodeType": "VariableDeclaration", "scope": 4641, "src": "11258:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4630, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11258:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "11257:14:37"}, "scope": 4816, "src": "11110:326:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4660, "nodeType": "Block", "src": "11653:174:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4654, "name": "ASSET_PROXY_DISPATCH_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4271, "src": "11706:35:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4655, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4643, "src": "11755:9:37", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$4212", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}}, {"argumentTypes": null, "id": 4656, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4645, "src": "11778:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 4657, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4647, "src": "11801:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$4212", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 4652, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "11670:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4653, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11670:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4658, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11670:150:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4651, "id": 4659, "nodeType": "Return", "src": "11663:157:37"}]}, "documentation": null, "id": 4661, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyDispatchError", "nodeType": "FunctionDefinition", "parameters": {"id": 4648, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4643, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 4661, "src": "11484:38:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$4212", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}, "typeName": {"contractScope": null, "id": 4642, "name": "AssetProxyDispatchErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4212, "src": "11484:28:37", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$4212", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4645, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 4661, "src": "11532:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4644, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11532:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4647, "name": "assetData", "nodeType": "VariableDeclaration", "scope": 4661, "src": "11559:22:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4646, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11559:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "11474:113:37"}, "returnParameters": {"id": 4651, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4650, "name": "", "nodeType": "VariableDeclaration", "scope": 4661, "src": "11635:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4649, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11635:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "11634:14:37"}, "scope": 4816, "src": "11442:385:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4680, "nodeType": "Block", "src": "12028:174:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4674, "name": "ASSET_PROXY_TRANSFER_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4274, "src": "12081:35:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4675, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4663, "src": "12130:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 4676, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4665, "src": "12153:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 4677, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4667, "src": "12176:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 4672, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "12045:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4673, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12045:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4678, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12045:150:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4671, "id": 4679, "nodeType": "Return", "src": "12038:157:37"}]}, "documentation": null, "id": 4681, "implemented": true, "kind": "function", "modifiers": [], "name": "AssetProxyTransferError", "nodeType": "FunctionDefinition", "parameters": {"id": 4668, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4663, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 4681, "src": "11875:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4662, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11875:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4665, "name": "assetData", "nodeType": "VariableDeclaration", "scope": 4681, "src": "11902:22:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4664, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11902:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4667, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 4681, "src": "11934:22:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4666, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11934:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "11865:97:37"}, "returnParameters": {"id": 4671, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4670, "name": "", "nodeType": "VariableDeclaration", "scope": 4681, "src": "12010:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4669, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12010:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "12009:14:37"}, "scope": 4816, "src": "11833:369:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4697, "nodeType": "Block", "src": "12371:155:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4692, "name": "NEGATIVE_SPREAD_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4277, "src": "12424:30:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4693, "name": "leftOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4683, "src": "12468:13:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 4694, "name": "rightOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4685, "src": "12495:14:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 4690, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "12388:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4691, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12388:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4695, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12388:131:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4689, "id": 4696, "nodeType": "Return", "src": "12381:138:37"}]}, "documentation": null, "id": 4698, "implemented": true, "kind": "function", "modifiers": [], "name": "NegativeSpreadError", "nodeType": "FunctionDefinition", "parameters": {"id": 4686, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4683, "name": "leftOrderHash", "nodeType": "VariableDeclaration", "scope": 4698, "src": "12246:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4682, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12246:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4685, "name": "rightOrderHash", "nodeType": "VariableDeclaration", "scope": 4698, "src": "12277:22:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4684, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12277:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "12236:69:37"}, "returnParameters": {"id": 4689, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4688, "name": "", "nodeType": "VariableDeclaration", "scope": 4698, "src": "12353:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4687, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12353:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "12352:14:37"}, "scope": 4816, "src": "12208:318:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4714, "nodeType": "Block", "src": "12703:148:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4709, "name": "TRANSACTION_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4280, "src": "12756:26:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4710, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4700, "src": "12796:9:37", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$4237", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}}, {"argumentTypes": null, "id": 4711, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4702, "src": "12819:15:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_TransactionErrorCodes_$4237", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 4707, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "12720:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4708, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12720:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4712, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12720:124:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4706, "id": 4713, "nodeType": "Return", "src": "12713:131:37"}]}, "documentation": null, "id": 4715, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionError", "nodeType": "FunctionDefinition", "parameters": {"id": 4703, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4700, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 4715, "src": "12567:31:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$4237", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}, "typeName": {"contractScope": null, "id": 4699, "name": "TransactionErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4237, "src": "12567:21:37", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$4237", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4702, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 4715, "src": "12608:23:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4701, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12608:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "12557:80:37"}, "returnParameters": {"id": 4706, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4705, "name": "", "nodeType": "VariableDeclaration", "scope": 4715, "src": "12685:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4704, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12685:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "12684:14:37"}, "scope": 4816, "src": "12532:319:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4731, "nodeType": "Block", "src": "13028:158:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4726, "name": "TRANSACTION_EXECUTION_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4283, "src": "13081:36:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4727, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4717, "src": "13131:15:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 4728, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4719, "src": "13160:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 4724, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "13045:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4725, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13045:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4729, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13045:134:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4723, "id": 4730, "nodeType": "Return", "src": "13038:141:37"}]}, "documentation": null, "id": 4732, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionExecutionError", "nodeType": "FunctionDefinition", "parameters": {"id": 4720, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4717, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 4732, "src": "12901:23:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4716, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12901:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4719, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 4732, "src": "12934:22:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4718, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12934:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "12891:71:37"}, "returnParameters": {"id": 4723, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4722, "name": "", "nodeType": "VariableDeclaration", "scope": 4732, "src": "13010:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4721, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13010:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "13009:14:37"}, "scope": 4816, "src": "12857:329:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4751, "nodeType": "Block", "src": "13396:193:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4745, "name": "TRANSACTION_GAS_PRICE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4286, "src": "13449:36:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4746, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4734, "src": "13499:15:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 4747, "name": "actualGasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4736, "src": "13528:14:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 4748, "name": "requiredGasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4738, "src": "13556:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 4743, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "13413:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4744, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13413:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4749, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13413:169:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4742, "id": 4750, "nodeType": "Return", "src": "13406:176:37"}]}, "documentation": null, "id": 4752, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionGasPriceError", "nodeType": "FunctionDefinition", "parameters": {"id": 4739, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4734, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 4752, "src": "13235:23:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4733, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13235:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4736, "name": "actualGasPrice", "nodeType": "VariableDeclaration", "scope": 4752, "src": "13268:22:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4735, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13268:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4738, "name": "requiredGasPrice", "nodeType": "VariableDeclaration", "scope": 4752, "src": "13300:24:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4737, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13300:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "13225:105:37"}, "returnParameters": {"id": 4742, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4741, "name": "", "nodeType": "VariableDeclaration", "scope": 4752, "src": "13378:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4740, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13378:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "13377:14:37"}, "scope": 4816, "src": "13192:397:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4768, "nodeType": "Block", "src": "13778:176:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4763, "name": "TRANSACTION_INVALID_CONTEXT_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4289, "src": "13831:42:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4764, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4754, "src": "13887:15:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 4765, "name": "currentContextAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4756, "src": "13916:21:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 4761, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "13795:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4762, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "13795:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4766, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13795:152:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4760, "id": 4767, "nodeType": "Return", "src": "13788:159:37"}]}, "documentation": null, "id": 4769, "implemented": true, "kind": "function", "modifiers": [], "name": "TransactionInvalidContextError", "nodeType": "FunctionDefinition", "parameters": {"id": 4757, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4754, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 4769, "src": "13644:23:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4753, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13644:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4756, "name": "currentContextAddress", "nodeType": "VariableDeclaration", "scope": 4769, "src": "13677:29:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4755, "name": "address", "nodeType": "ElementaryTypeName", "src": "13677:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "13634:78:37"}, "returnParameters": {"id": 4760, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4759, "name": "", "nodeType": "VariableDeclaration", "scope": 4769, "src": "13760:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4758, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13760:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "13759:14:37"}, "scope": 4816, "src": "13595:359:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4788, "nodeType": "Block", "src": "14183:195:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4782, "name": "INCOMPLETE_FILL_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4292, "src": "14236:30:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4783, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4771, "src": "14280:9:37", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$4241", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}}, {"argumentTypes": null, "id": 4784, "name": "expectedAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4773, "src": "14303:23:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 4785, "name": "actualAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4775, "src": "14340:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$4241", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 4780, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "14200:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4781, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14200:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4786, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14200:171:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4779, "id": 4787, "nodeType": "Return", "src": "14193:178:37"}]}, "documentation": null, "id": 4789, "implemented": true, "kind": "function", "modifiers": [], "name": "IncompleteFillError", "nodeType": "FunctionDefinition", "parameters": {"id": 4776, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4771, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 4789, "src": "13998:33:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$4241", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}, "typeName": {"contractScope": null, "id": 4770, "name": "IncompleteFillErrorCode", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4241, "src": "13998:23:37", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$4241", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4773, "name": "expectedAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 4789, "src": "14041:31:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4772, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14041:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4775, "name": "actualAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 4789, "src": "14082:29:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4774, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14082:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "13988:129:37"}, "returnParameters": {"id": 4779, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4778, "name": "", "nodeType": "VariableDeclaration", "scope": 4789, "src": "14165:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4777, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "14165:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "14164:14:37"}, "scope": 4816, "src": "13960:418:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 4814, "nodeType": "Block", "src": "14632:224:37", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4806, "name": "PAY_PROTOCOL_FEE_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4298, "src": "14685:31:37", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 4807, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4791, "src": "14730:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 4808, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4793, "src": "14753:11:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 4809, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4795, "src": "14778:12:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 4810, "name": "takerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4797, "src": "14804:12:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 4811, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4799, "src": "14830:9:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 4804, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "14649:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4805, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14649:22:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 4812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14649:200:37", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4803, "id": 4813, "nodeType": "Return", "src": "14642:207:37"}]}, "documentation": null, "id": 4815, "implemented": true, "kind": "function", "modifiers": [], "name": "PayProtocolFeeError", "nodeType": "FunctionDefinition", "parameters": {"id": 4800, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4791, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 4815, "src": "14422:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 4790, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "14422:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4793, "name": "protocolFee", "nodeType": "VariableDeclaration", "scope": 4815, "src": "14449:19:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4792, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14449:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4795, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 4815, "src": "14478:20:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4794, "name": "address", "nodeType": "ElementaryTypeName", "src": "14478:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4797, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 4815, "src": "14508:20:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4796, "name": "address", "nodeType": "ElementaryTypeName", "src": "14508:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4799, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 4815, "src": "14538:22:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4798, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "14538:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "14412:154:37"}, "returnParameters": {"id": 4803, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4802, "name": "", "nodeType": "VariableDeclaration", "scope": 4815, "src": "14614:12:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4801, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "14614:5:37", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "14613:14:37"}, "scope": 4816, "src": "14384:472:37", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 4817, "src": "694:14164:37"}], "src": "580:14279:37"}, "id": 37}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol", "exportedSymbols": {"LibFillResults": [5502]}, "id": 5503, "nodeType": "SourceUnit", "nodes": [{"id": 4818, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:38"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol", "file": "@0x/contracts-utils/contracts/src/LibSafeMath.sol", "id": 4819, "nodeType": "ImportDirective", "scope": 5503, "sourceUnit": 11217, "src": "605:59:38", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/contracts-exchange-libs/contracts/src/LibMath.sol", "file": "./LibMath.sol", "id": 4820, "nodeType": "ImportDirective", "scope": 5503, "sourceUnit": 5781, "src": "665:23:38", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "./LibOrder.sol", "id": 4821, "nodeType": "ImportDirective", "scope": 5503, "sourceUnit": 5929, "src": "689:24:38", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 5502, "linearizedBaseContracts": [5502], "name": "LibFillResults", "nodeType": "ContractDefinition", "nodes": [{"id": 4824, "libraryName": {"contractScope": null, "id": 4822, "name": "LibSafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11216, "src": "752:11:38", "typeDescriptions": {"typeIdentifier": "t_contract$_LibSafeMath_$11216", "typeString": "library LibSafeMath"}}, "nodeType": "UsingForDirective", "src": "746:30:38", "typeName": {"id": 4823, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "768:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"canonicalName": "LibFillResults.BatchMatchedFillResults", "id": 4835, "members": [{"constant": false, "id": 4827, "name": "left", "nodeType": "VariableDeclaration", "scope": 4835, "src": "823:18:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$4846_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}, "typeName": {"baseType": {"contractScope": null, "id": 4825, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4846, "src": "823:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 4826, "length": null, "nodeType": "ArrayTypeName", "src": "823:13:38", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$4846_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4830, "name": "right", "nodeType": "VariableDeclaration", "scope": 4835, "src": "896:19:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$4846_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}, "typeName": {"baseType": {"contractScope": null, "id": 4828, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4846, "src": "896:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 4829, "length": null, "nodeType": "ArrayTypeName", "src": "896:13:38", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$4846_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4832, "name": "profitInLeftMakerAsset", "nodeType": "VariableDeclaration", "scope": 4835, "src": "970:30:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4831, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "970:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4834, "name": "profitInRightMakerAsset", "nodeType": "VariableDeclaration", "scope": 4835, "src": "1044:31:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4833, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1044:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "BatchMatchedFillResults", "nodeType": "StructDefinition", "scope": 5502, "src": "782:334:38", "visibility": "public"}, {"canonicalName": "LibFillResults.FillResults", "id": 4846, "members": [{"constant": false, "id": 4837, "name": "makerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 4846, "src": "1151:30:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4836, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1151:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4839, "name": "takerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 4846, "src": "1233:30:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4838, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1233:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4841, "name": "makerFeePaid", "nodeType": "VariableDeclaration", "scope": 4846, "src": "1315:20:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4840, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1315:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4843, "name": "takerFeePaid", "nodeType": "VariableDeclaration", "scope": 4846, "src": "1417:20:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4842, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1417:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4845, "name": "protocolFeePaid", "nodeType": "VariableDeclaration", "scope": 4846, "src": "1517:23:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4844, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1517:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "FillResults", "nodeType": "StructDefinition", "scope": 5502, "src": "1122:496:38", "visibility": "public"}, {"canonicalName": "LibFillResults.MatchedFillResults", "id": 4855, "members": [{"constant": false, "id": 4848, "name": "left", "nodeType": "VariableDeclaration", "scope": 4855, "src": "1660:16:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_storage_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 4847, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4846, "src": "1660:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4850, "name": "right", "nodeType": "VariableDeclaration", "scope": 4855, "src": "1748:17:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_storage_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 4849, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4846, "src": "1748:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4852, "name": "profitInLeftMakerAsset", "nodeType": "VariableDeclaration", "scope": 4855, "src": "1837:30:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4851, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1837:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4854, "name": "profitInRightMakerAsset", "nodeType": "VariableDeclaration", "scope": 4855, "src": "1914:31:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4853, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1914:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "MatchedFillResults", "nodeType": "StructDefinition", "scope": 5502, "src": "1624:365:38", "visibility": "public"}, {"body": {"id": 4924, "nodeType": "Block", "src": "2766:867:38", "statements": [{"expression": {"argumentTypes": null, "id": 4872, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4868, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4866, "src": "2825:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 4870, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "2825:34:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 4871, "name": "takerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4859, "src": "2862:22:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2825:59:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4873, "nodeType": "ExpressionStatement", "src": "2825:59:38"}, {"expression": {"argumentTypes": null, "id": 4885, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4874, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4866, "src": "2894:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 4876, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "2894:34:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4879, "name": "takerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4859, "src": "2978:22:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4880, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4857, "src": "3014:5:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4881, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "3014:22:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4882, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4857, "src": "3050:5:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4883, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5844, "src": "3050:22:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 4877, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "2931:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 4878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 5552, "src": "2931:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 4884, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2931:151:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2894:188:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4886, "nodeType": "ExpressionStatement", "src": "2894:188:38"}, {"expression": {"argumentTypes": null, "id": 4898, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4887, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4866, "src": "3092:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 4889, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4841, "src": "3092:24:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4892, "name": "takerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4859, "src": "3166:22:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4893, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4857, "src": "3202:5:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4894, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "3202:22:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4895, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4857, "src": "3238:5:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4896, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFee", "nodeType": "MemberAccess", "referencedDeclaration": 5848, "src": "3238:14:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 4890, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "3119:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 4891, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 5552, "src": "3119:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 4897, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3119:143:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3092:170:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4899, "nodeType": "ExpressionStatement", "src": "3092:170:38"}, {"expression": {"argumentTypes": null, "id": 4911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4900, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4866, "src": "3272:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 4902, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4843, "src": "3272:24:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4905, "name": "takerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4859, "src": "3346:22:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4906, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4857, "src": "3382:5:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4907, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "3382:22:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4908, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4857, "src": "3418:5:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4909, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFee", "nodeType": "MemberAccess", "referencedDeclaration": 5850, "src": "3418:14:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 4903, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "3299:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 4904, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 5552, "src": "3299:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 4910, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3299:143:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3272:170:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4912, "nodeType": "ExpressionStatement", "src": "3272:170:38"}, {"expression": {"argumentTypes": null, "id": 4920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4913, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4866, "src": "3528:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 4915, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4845, "src": "3528:27:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4918, "name": "protocolFeeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4861, "src": "3575:21:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 4916, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4863, "src": "3558:8:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4917, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "3558:16:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 4919, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3558:39:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3528:69:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4921, "nodeType": "ExpressionStatement", "src": "3528:69:38"}, {"expression": {"argumentTypes": null, "id": 4922, "name": "fillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4866, "src": "3615:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "functionReturnParameters": 4867, "id": 4923, "nodeType": "Return", "src": "3608:18:38"}]}, "documentation": "@dev Calculates amounts filled and fees paid by maker and taker.\n @param order to be filled.\n @param takerAssetFilledAmount Amount of takerAsset that will be filled.\n @param protocolFeeMultiplier The current protocol fee of the exchange contract.\n @param gasPrice The gasprice of the transaction. This is provided so that the function call can continue\n to be pure rather than view.\n @return fillResults Amounts filled and fees paid by maker and taker.", "id": 4925, "implemented": true, "kind": "function", "modifiers": [], "name": "calculateFillResults", "nodeType": "FunctionDefinition", "parameters": {"id": 4864, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4857, "name": "order", "nodeType": "VariableDeclaration", "scope": 4925, "src": "2544:27:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 4856, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5863, "src": "2544:14:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4859, "name": "takerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 4925, "src": "2581:30:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4858, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2581:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4861, "name": "protocolFeeMultiplier", "nodeType": "VariableDeclaration", "scope": 4925, "src": "2621:29:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4860, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2621:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4863, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 4925, "src": "2660:16:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4862, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2660:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2534:148:38"}, "returnParameters": {"id": 4867, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4866, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 4925, "src": "2730:30:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 4865, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4846, "src": "2730:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "2729:32:38"}, "scope": 5502, "src": "2505:1128:38", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 5101, "nodeType": "Block", "src": "5231:3035:38", "statements": [{"assignments": [4945], "declarations": [{"constant": false, "id": 4945, "name": "leftTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5101, "src": "5337:37:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4944, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5337:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 4951, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4949, "name": "leftOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4931, "src": "5412:31:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4946, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4927, "src": "5377:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4947, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "5377:26:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4948, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "5377:34:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 4950, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5377:67:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5337:107:38"}, {"assignments": [4953], "declarations": [{"constant": false, "id": 4953, "name": "leftMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5101, "src": "5454:37:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4952, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5454:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 4962, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4956, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4927, "src": "5541:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4957, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5844, "src": "5541:26:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4958, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4927, "src": "5581:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4959, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "5581:26:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 4960, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4945, "src": "5621:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 4954, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "5494:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 4955, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 5552, "src": "5494:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 4961, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5494:166:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5454:206:38"}, {"assignments": [4964], "declarations": [{"constant": false, "id": 4964, "name": "rightTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5101, "src": "5670:38:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4963, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5670:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 4970, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4968, "name": "rightOrderTakerAssetFilledAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4933, "src": "5747:32:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4965, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4929, "src": "5711:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4966, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "5711:27:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "5711:35:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 4969, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5711:69:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5670:110:38"}, {"assignments": [4972], "declarations": [{"constant": false, "id": 4972, "name": "rightMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5101, "src": "5790:38:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4971, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5790:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 4981, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4975, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4929, "src": "5878:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4976, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5844, "src": "5878:27:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 4977, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4929, "src": "5919:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 4978, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "5919:27:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 4979, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4964, "src": "5960:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 4973, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "5831:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 4974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 5552, "src": "5831:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 4980, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5831:169:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5790:210:38"}, {"condition": {"argumentTypes": null, "id": 4982, "name": "shouldMaximallyFillOrders", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4939, "src": "6123:25:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5006, "nodeType": "Block", "src": "6504:333:38", "statements": [{"expression": {"argumentTypes": null, "id": 5004, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 4995, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "6518:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4997, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4927, "src": "6585:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 4998, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4929, "src": "6612:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 4999, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4953, "src": "6640:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5000, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4945, "src": "6687:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5001, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4972, "src": "6734:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5002, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4964, "src": "6782:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4996, "name": "_calculateMatchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5269, "src": "6539:28:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$5863_memory_ptr_$_t_struct$_Order_$5863_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$4855_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.Order memory,uint256,uint256,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 5003, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6539:287:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "6518:308:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5005, "nodeType": "ExpressionStatement", "src": "6518:308:38"}]}, "id": 5007, "nodeType": "IfStatement", "src": "6119:718:38", "trueBody": {"id": 4994, "nodeType": "Block", "src": "6150:348:38", "statements": [{"expression": {"argumentTypes": null, "id": 4992, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 4983, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "6164:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 4985, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4927, "src": "6246:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 4986, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4929, "src": "6273:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 4987, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4953, "src": "6301:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 4988, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4945, "src": "6348:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 4989, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4972, "src": "6395:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 4990, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4964, "src": "6443:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4984, "name": "_calculateMatchedFillResultsWithMaximalFill", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5400, "src": "6185:43:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$5863_memory_ptr_$_t_struct$_Order_$5863_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$4855_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,struct LibOrder.Order memory,uint256,uint256,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 4991, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6185:302:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "6164:323:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 4993, "nodeType": "ExpressionStatement", "src": "6164:323:38"}]}}, {"expression": {"argumentTypes": null, "id": 5023, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5008, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "6886:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5011, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "6886:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5012, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4841, "src": "6886:36:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5015, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "6972:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5016, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "6972:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5017, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "6972:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5018, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4927, "src": "7032:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5019, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5844, "src": "7032:26:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5020, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4927, "src": "7072:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5021, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFee", "nodeType": "MemberAccess", "referencedDeclaration": 5848, "src": "7072:18:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5013, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "6925:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 5014, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 5552, "src": "6925:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 5022, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6925:175:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6886:214:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5024, "nodeType": "ExpressionStatement", "src": "6886:214:38"}, {"expression": {"argumentTypes": null, "id": 5040, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5025, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "7110:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5028, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "7110:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5029, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4843, "src": "7110:36:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5032, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "7196:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5033, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "7196:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5034, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "7196:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5035, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4927, "src": "7256:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5036, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "7256:26:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5037, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4927, "src": "7296:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5038, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFee", "nodeType": "MemberAccess", "referencedDeclaration": 5850, "src": "7296:18:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5030, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "7149:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 5031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 5552, "src": "7149:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 5039, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7149:175:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7110:214:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5041, "nodeType": "ExpressionStatement", "src": "7110:214:38"}, {"expression": {"argumentTypes": null, "id": 5057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5042, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "7375:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5045, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "7375:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5046, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4841, "src": "7375:37:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5049, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "7462:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5050, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "7462:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5051, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "7462:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5052, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4929, "src": "7523:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5053, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5844, "src": "7523:27:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5054, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4929, "src": "7564:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5055, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFee", "nodeType": "MemberAccess", "referencedDeclaration": 5848, "src": "7564:19:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5047, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "7415:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 5048, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 5552, "src": "7415:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 5056, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7415:178:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7375:218:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5058, "nodeType": "ExpressionStatement", "src": "7375:218:38"}, {"expression": {"argumentTypes": null, "id": 5074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5059, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "7603:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5062, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "7603:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5063, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4843, "src": "7603:37:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5066, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "7690:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5067, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "7690:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5068, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "7690:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5069, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4929, "src": "7751:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5070, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "7751:27:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5071, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4929, "src": "7792:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5072, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFee", "nodeType": "MemberAccess", "referencedDeclaration": 5850, "src": "7792:19:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5064, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "7643:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 5065, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 5552, "src": "7643:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 5073, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7643:178:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7603:218:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5075, "nodeType": "ExpressionStatement", "src": "7603:218:38"}, {"assignments": [5077], "declarations": [{"constant": false, "id": 5077, "name": "protocolFee", "nodeType": "VariableDeclaration", "scope": 5101, "src": "8004:19:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5076, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8004:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 5082, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5080, "name": "protocolFeeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4935, "src": "8043:21:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5078, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4937, "src": "8026:8:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5079, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "8026:16:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5081, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8026:39:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "8004:61:38"}, {"expression": {"argumentTypes": null, "id": 5089, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5083, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "8075:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5086, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "8075:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5087, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4845, "src": "8075:39:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5088, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5077, "src": "8117:11:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8075:53:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5090, "nodeType": "ExpressionStatement", "src": "8075:53:38"}, {"expression": {"argumentTypes": null, "id": 5097, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5091, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "8138:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5094, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "8138:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5095, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4845, "src": "8138:40:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5096, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5077, "src": "8181:11:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8138:54:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5098, "nodeType": "ExpressionStatement", "src": "8138:54:38"}, {"expression": {"argumentTypes": null, "id": 5099, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4942, "src": "8241:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 4943, "id": 5100, "nodeType": "Return", "src": "8234:25:38"}]}, "documentation": "@dev Calculates fill amounts for the matched orders.\n Each order is filled at their respective price point. However, the calculations are\n carried out as though the orders are both being filled at the right order's price point.\n The profit made by the leftOrder order goes to the taker (who matched the two orders).\n @param leftOrder First order to match.\n @param rightOrder Second order to match.\n @param leftOrderTakerAssetFilledAmount Amount of left order already filled.\n @param rightOrderTakerAssetFilledAmount Amount of right order already filled.\n @param protocolFeeMultiplier The current protocol fee of the exchange contract.\n @param gasPrice The gasprice of the transaction. This is provided so that the function call can continue\n to be pure rather than view.\n @param shouldMaximallyFillOrders A value that indicates whether or not this calculation should use\n the maximal fill order matching strategy.\n @param matchedFillResults Amounts to fill and fees to pay by maker and taker of matched orders.", "id": 5102, "implemented": true, "kind": "function", "modifiers": [], "name": "calculateMatchedFillResults", "nodeType": "FunctionDefinition", "parameters": {"id": 4940, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4927, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 5102, "src": "4850:31:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 4926, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5863, "src": "4850:14:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4929, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 5102, "src": "4891:32:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 4928, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5863, "src": "4891:14:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4931, "name": "leftOrderTakerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 5102, "src": "4933:39:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4930, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4933:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4933, "name": "rightOrderTakerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 5102, "src": "4982:40:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4932, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4982:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4935, "name": "protocolFeeMultiplier", "nodeType": "VariableDeclaration", "scope": 5102, "src": "5032:29:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4934, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5032:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4937, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 5102, "src": "5071:16:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4936, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5071:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 4939, "name": "shouldMaximallyFillOrders", "nodeType": "VariableDeclaration", "scope": 5102, "src": "5097:30:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4938, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5097:4:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "4840:293:38"}, "returnParameters": {"id": 4943, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4942, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 5102, "src": "5181:44:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 4941, "name": "MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4855, "src": "5181:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "5180:46:38"}, "scope": 5502, "src": "4804:3462:38", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 5168, "nodeType": "Block", "src": "8681:620:38", "statements": [{"expression": {"argumentTypes": null, "id": 5120, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5111, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5109, "src": "8691:16:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5113, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "8691:39:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5117, "name": "fillResults2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5106, "src": "8777:12:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5118, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "8777:35:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5114, "name": "fillResults1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5104, "src": "8733:12:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5115, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "8733:35:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "8733:43:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5119, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8733:80:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8691:122:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5121, "nodeType": "ExpressionStatement", "src": "8691:122:38"}, {"expression": {"argumentTypes": null, "id": 5131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5122, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5109, "src": "8823:16:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5124, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "8823:39:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5128, "name": "fillResults2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5106, "src": "8909:12:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5129, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "8909:35:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5125, "name": "fillResults1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5104, "src": "8865:12:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5126, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "8865:35:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "8865:43:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5130, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8865:80:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8823:122:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5132, "nodeType": "ExpressionStatement", "src": "8823:122:38"}, {"expression": {"argumentTypes": null, "id": 5142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5133, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5109, "src": "8955:16:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5135, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4841, "src": "8955:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5139, "name": "fillResults2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5106, "src": "9021:12:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5140, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4841, "src": "9021:25:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5136, "name": "fillResults1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5104, "src": "8987:12:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5137, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4841, "src": "8987:25:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5138, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "8987:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5141, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8987:60:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8955:92:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5143, "nodeType": "ExpressionStatement", "src": "8955:92:38"}, {"expression": {"argumentTypes": null, "id": 5153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5144, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5109, "src": "9057:16:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5146, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4843, "src": "9057:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5150, "name": "fillResults2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5106, "src": "9123:12:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5151, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4843, "src": "9123:25:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5147, "name": "fillResults1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5104, "src": "9089:12:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5148, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4843, "src": "9089:25:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5149, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "9089:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5152, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9089:60:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9057:92:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5154, "nodeType": "ExpressionStatement", "src": "9057:92:38"}, {"expression": {"argumentTypes": null, "id": 5164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5155, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5109, "src": "9159:16:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5157, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4845, "src": "9159:32:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5161, "name": "fillResults2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5106, "src": "9231:12:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5162, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4845, "src": "9231:28:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5158, "name": "fillResults1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5104, "src": "9194:12:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5159, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "protocolFeePaid", "nodeType": "MemberAccess", "referencedDeclaration": 4845, "src": "9194:28:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "9194:36:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9194:66:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9159:101:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5165, "nodeType": "ExpressionStatement", "src": "9159:101:38"}, {"expression": {"argumentTypes": null, "id": 5166, "name": "totalFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5109, "src": "9278:16:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults memory"}}, "functionReturnParameters": 5110, "id": 5167, "nodeType": "Return", "src": "9271:23:38"}]}, "documentation": "@dev Adds properties of both FillResults instances.\n @param fillResults1 The first FillResults.\n @param fillResults2 The second FillResults.\n @return The sum of both fill results.", "id": 5169, "implemented": true, "kind": "function", "modifiers": [], "name": "addFillResults", "nodeType": "FunctionDefinition", "parameters": {"id": 5107, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5104, "name": "fillResults1", "nodeType": "VariableDeclaration", "scope": 5169, "src": "8514:31:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 5103, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4846, "src": "8514:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5106, "name": "fillResults2", "nodeType": "VariableDeclaration", "scope": 5169, "src": "8555:31:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 5105, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4846, "src": "8555:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "8504:88:38"}, "returnParameters": {"id": 5110, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5109, "name": "totalFillResults", "nodeType": "VariableDeclaration", "scope": 5169, "src": "8640:35:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 5108, "name": "FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4846, "src": "8640:11:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "8639:37:38"}, "scope": 5502, "src": "8481:820:38", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 5268, "nodeType": "Block", "src": "10570:2950:38", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5186, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5177, "src": "11465:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 5187, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5179, "src": "11497:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11465:62:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5198, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5177, "src": "11800:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "id": 5199, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5179, "src": "11832:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11800:62:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5250, "nodeType": "Block", "src": "12690:565:38", "statements": [{"expression": {"argumentTypes": null, "id": 5248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5241, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5184, "src": "12993:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5243, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5175, "src": "13058:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5244, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5177, "src": "13105:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5245, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5179, "src": "13152:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5246, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5181, "src": "13200:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5242, "name": "_calculateCompleteFillBoth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5448, "src": "13014:26:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$4855_memory_ptr_$", "typeString": "function (uint256,uint256,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 5247, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13014:230:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "12993:251:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5249, "nodeType": "ExpressionStatement", "src": "12993:251:38"}]}, "id": 5251, "nodeType": "IfStatement", "src": "11796:1459:38", "trueBody": {"id": 5240, "nodeType": "Block", "src": "11864:820:38", "statements": [{"expression": {"argumentTypes": null, "id": 5207, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5201, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5184, "src": "11928:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5204, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "11928:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5205, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "11928:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5206, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5175, "src": "11977:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11928:78:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5208, "nodeType": "ExpressionStatement", "src": "11928:78:38"}, {"expression": {"argumentTypes": null, "id": 5215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5209, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5184, "src": "12020:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5212, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "12020:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5213, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "12020:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5214, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5177, "src": "12069:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12020:78:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5216, "nodeType": "ExpressionStatement", "src": "12020:78:38"}, {"expression": {"argumentTypes": null, "id": 5223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5217, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5184, "src": "12112:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5220, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "12112:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5221, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "12112:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5222, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5177, "src": "12162:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12112:79:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5224, "nodeType": "ExpressionStatement", "src": "12112:79:38"}, {"expression": {"argumentTypes": null, "id": 5238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5225, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5184, "src": "12389:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5228, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "12389:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5229, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "12389:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5232, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5173, "src": "12489:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5233, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "12489:27:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5234, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5173, "src": "12534:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5235, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5844, "src": "12534:27:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5236, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5177, "src": "12579:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5230, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "12439:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 5231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountCeil", "nodeType": "MemberAccess", "referencedDeclaration": 5600, "src": "12439:32:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 5237, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12439:234:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12389:284:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5239, "nodeType": "ExpressionStatement", "src": "12389:284:38"}]}}, "id": 5252, "nodeType": "IfStatement", "src": "11461:1794:38", "trueBody": {"id": 5197, "nodeType": "Block", "src": "11529:261:38", "statements": [{"expression": {"argumentTypes": null, "id": 5195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5189, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5184, "src": "11594:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5191, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5171, "src": "11660:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 5192, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5179, "src": "11687:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5193, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5181, "src": "11735:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5190, "name": "_calculateCompleteRightFill", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5501, "src": "11615:27:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$5863_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$4855_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 5194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11615:164:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "11594:185:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5196, "nodeType": "ExpressionStatement", "src": "11594:185:38"}]}}, {"expression": {"argumentTypes": null, "id": 5264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5253, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5184, "src": "13308:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5255, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "profitInLeftMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 4852, "src": "13308:41:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5260, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5184, "src": "13420:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5261, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "13420:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5262, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "13420:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5256, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5184, "src": "13352:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5257, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "13352:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5258, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "13352:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5259, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "13352:54:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5263, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13352:125:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "13308:169:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5265, "nodeType": "ExpressionStatement", "src": "13308:169:38"}, {"expression": {"argumentTypes": null, "id": 5266, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5184, "src": "13495:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 5185, "id": 5267, "nodeType": "Return", "src": "13488:25:38"}]}, "documentation": "@dev Calculates part of the matched fill results for a given situation using the fill strategy that only\n awards profit denominated in the left maker asset.\n @param leftOrder The left order in the order matching situation.\n @param rightOrder The right order in the order matching situation.\n @param leftMakerAssetAmountRemaining The amount of the left order maker asset that can still be filled.\n @param leftTakerAssetAmountRemaining The amount of the left order taker asset that can still be filled.\n @param rightMakerAssetAmountRemaining The amount of the right order maker asset that can still be filled.\n @param rightTakerAssetAmountRemaining The amount of the right order taker asset that can still be filled.\n @return MatchFillResults struct that does not include fees paid.", "id": 5269, "implemented": true, "kind": "function", "modifiers": [], "name": "_calculateMatchedFillResults", "nodeType": "FunctionDefinition", "parameters": {"id": 5182, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5171, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 5269, "src": "10204:31:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 5170, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5863, "src": "10204:14:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5173, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 5269, "src": "10245:32:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 5172, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5863, "src": "10245:14:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5175, "name": "leftMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5269, "src": "10287:37:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5174, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10287:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5177, "name": "leftTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5269, "src": "10334:37:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5176, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10334:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5179, "name": "rightMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5269, "src": "10381:38:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5178, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10381:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5181, "name": "rightTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5269, "src": "10429:38:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5180, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10429:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "10194:279:38"}, "returnParameters": {"id": 5185, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5184, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 5269, "src": "10520:44:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 5183, "name": "MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4855, "src": "10520:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "10519:46:38"}, "scope": 5502, "src": "10157:3363:38", "stateMutability": "pure", "superFunction": null, "visibility": "private"}, {"body": {"id": 5399, "nodeType": "Block", "src": "14767:3936:38", "statements": [{"assignments": [5287], "declarations": [{"constant": false, "id": 5287, "name": "doesLeftMakerAssetProfitExist", "nodeType": "VariableDeclaration", "scope": 5399, "src": "14908:34:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5286, "name": "bool", "nodeType": "ElementaryTypeName", "src": "14908:4:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "id": 5291, "initialValue": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5288, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5275, "src": "14945:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 5289, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5281, "src": "14977:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "14945:62:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "14908:99:38"}, {"assignments": [5293], "declarations": [{"constant": false, "id": 5293, "name": "doesRightMakerAssetProfitExist", "nodeType": "VariableDeclaration", "scope": 5399, "src": "15017:35:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5292, "name": "bool", "nodeType": "ElementaryTypeName", "src": "15017:4:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "id": 5297, "initialValue": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5294, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5279, "src": "15055:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 5295, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5277, "src": "15088:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "15055:62:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "15017:100:38"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5300, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5298, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5277, "src": "16229:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 5299, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5279, "src": "16261:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16229:62:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5310, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5281, "src": "16608:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 5311, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5275, "src": "16641:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16608:62:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5362, "nodeType": "Block", "src": "17577:342:38", "statements": [{"expression": {"argumentTypes": null, "id": 5360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5353, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "17657:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5355, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5275, "src": "17722:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5356, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5277, "src": "17769:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5357, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5279, "src": "17816:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5358, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5281, "src": "17864:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5354, "name": "_calculateCompleteFillBoth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5448, "src": "17678:26:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$4855_memory_ptr_$", "typeString": "function (uint256,uint256,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 5359, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17678:230:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "17657:251:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5361, "nodeType": "ExpressionStatement", "src": "17657:251:38"}]}, "id": 5363, "nodeType": "IfStatement", "src": "16604:1315:38", "trueBody": {"id": 5352, "nodeType": "Block", "src": "16672:899:38", "statements": [{"expression": {"argumentTypes": null, "id": 5319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5313, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "16782:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5316, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "16782:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5317, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "16782:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5318, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5275, "src": "16831:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16782:78:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5320, "nodeType": "ExpressionStatement", "src": "16782:78:38"}, {"expression": {"argumentTypes": null, "id": 5327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5321, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "16874:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5324, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "16874:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5325, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "16874:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5326, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5277, "src": "16923:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16874:78:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5328, "nodeType": "ExpressionStatement", "src": "16874:78:38"}, {"expression": {"argumentTypes": null, "id": 5342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5329, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "17233:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5332, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "17233:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5333, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "17233:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5336, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5273, "src": "17334:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5337, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5844, "src": "17334:27:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5338, "name": "rightOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5273, "src": "17379:10:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5339, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "17379:27:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5340, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5275, "src": "17424:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5334, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "17283:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 5335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 5552, "src": "17283:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 5341, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17283:184:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "17233:234:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5343, "nodeType": "ExpressionStatement", "src": "17233:234:38"}, {"expression": {"argumentTypes": null, "id": 5350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5344, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "17481:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5347, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "17481:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5348, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "17481:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5349, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5275, "src": "17531:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "17481:79:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5351, "nodeType": "ExpressionStatement", "src": "17481:79:38"}]}}, "id": 5364, "nodeType": "IfStatement", "src": "16225:1694:38", "trueBody": {"id": 5309, "nodeType": "Block", "src": "16293:305:38", "statements": [{"expression": {"argumentTypes": null, "id": 5307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5301, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "16402:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5303, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5271, "src": "16468:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, {"argumentTypes": null, "id": 5304, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5279, "src": "16495:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5305, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5281, "src": "16543:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5302, "name": "_calculateCompleteRightFill", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5501, "src": "16423:27:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$5863_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_MatchedFillResults_$4855_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory,uint256,uint256) pure returns (struct LibFillResults.MatchedFillResults memory)"}}, "id": 5306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16423:164:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "src": "16402:185:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5308, "nodeType": "ExpressionStatement", "src": "16402:185:38"}]}}, {"condition": {"argumentTypes": null, "id": 5365, "name": "doesLeftMakerAssetProfitExist", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5287, "src": "18055:29:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 5380, "nodeType": "IfStatement", "src": "18051:237:38", "trueBody": {"id": 5379, "nodeType": "Block", "src": "18086:202:38", "statements": [{"expression": {"argumentTypes": null, "id": 5377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5366, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "18100:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5368, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "profitInLeftMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 4852, "src": "18100:41:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5373, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "18216:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5374, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "18216:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5375, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "18216:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5369, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "18144:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5370, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "18144:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5371, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "18144:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "18144:54:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5376, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18144:133:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18100:177:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5378, "nodeType": "ExpressionStatement", "src": "18100:177:38"}]}}, {"condition": {"argumentTypes": null, "id": 5381, "name": "doesRightMakerAssetProfitExist", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5293, "src": "18426:30:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 5396, "nodeType": "IfStatement", "src": "18422:239:38", "trueBody": {"id": 5395, "nodeType": "Block", "src": "18458:203:38", "statements": [{"expression": {"argumentTypes": null, "id": 5393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5382, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "18472:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5384, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "profitInRightMakerAsset", "nodeType": "MemberAccess", "referencedDeclaration": 4854, "src": "18472:42:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5389, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "18590:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5390, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "18590:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5391, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "18590:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5385, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "18517:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5386, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "18517:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5387, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "18517:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "18517:55:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5392, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18517:133:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18472:178:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5394, "nodeType": "ExpressionStatement", "src": "18472:178:38"}]}}, {"expression": {"argumentTypes": null, "id": 5397, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5284, "src": "18678:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 5285, "id": 5398, "nodeType": "Return", "src": "18671:25:38"}]}, "documentation": "@dev Calculates part of the matched fill results for a given situation using the maximal fill order matching\n strategy.\n @param leftOrder The left order in the order matching situation.\n @param rightOrder The right order in the order matching situation.\n @param leftMakerAssetAmountRemaining The amount of the left order maker asset that can still be filled.\n @param leftTakerAssetAmountRemaining The amount of the left order taker asset that can still be filled.\n @param rightMakerAssetAmountRemaining The amount of the right order maker asset that can still be filled.\n @param rightTakerAssetAmountRemaining The amount of the right order taker asset that can still be filled.\n @return MatchFillResults struct that does not include fees paid.", "id": 5400, "implemented": true, "kind": "function", "modifiers": [], "name": "_calculateMatchedFillResultsWithMaximalFill", "nodeType": "FunctionDefinition", "parameters": {"id": 5282, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5271, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 5400, "src": "14401:31:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 5270, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5863, "src": "14401:14:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5273, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 5400, "src": "14442:32:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 5272, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5863, "src": "14442:14:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5275, "name": "leftMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5400, "src": "14484:37:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5274, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14484:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5277, "name": "leftTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5400, "src": "14531:37:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5276, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14531:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5279, "name": "rightMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5400, "src": "14578:38:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5278, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14578:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5281, "name": "rightTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5400, "src": "14626:38:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5280, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14626:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "14391:279:38"}, "returnParameters": {"id": 5285, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5284, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 5400, "src": "14717:44:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 5283, "name": "MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4855, "src": "14717:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "14716:46:38"}, "scope": 5502, "src": "14339:4364:38", "stateMutability": "pure", "superFunction": null, "visibility": "private"}, {"body": {"id": 5447, "nodeType": "Block", "src": "19820:462:38", "statements": [{"expression": {"argumentTypes": null, "id": 5419, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5413, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5411, "src": "19893:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5416, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "19893:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5417, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "19893:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5418, "name": "leftMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5402, "src": "19942:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "19893:78:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5420, "nodeType": "ExpressionStatement", "src": "19893:78:38"}, {"expression": {"argumentTypes": null, "id": 5427, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5421, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5411, "src": "19981:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "19981:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5425, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "19981:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5426, "name": "leftTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5404, "src": "20030:29:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "19981:78:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5428, "nodeType": "ExpressionStatement", "src": "19981:78:38"}, {"expression": {"argumentTypes": null, "id": 5435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5429, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5411, "src": "20069:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5432, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "20069:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5433, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "20069:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5434, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5406, "src": "20119:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "20069:80:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5436, "nodeType": "ExpressionStatement", "src": "20069:80:38"}, {"expression": {"argumentTypes": null, "id": 5443, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5437, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5411, "src": "20159:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5440, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "20159:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5441, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "20159:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5442, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5408, "src": "20209:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "20159:80:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5444, "nodeType": "ExpressionStatement", "src": "20159:80:38"}, {"expression": {"argumentTypes": null, "id": 5445, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5411, "src": "20257:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 5412, "id": 5446, "nodeType": "Return", "src": "20250:25:38"}]}, "documentation": "@dev Calculates the fill results for the maker and taker in the order matching and writes the results\n to the fillResults that are being collected on the order. Both orders will be fully filled in this\n case.\n @param leftMakerAssetAmountRemaining The amount of the left maker asset that is remaining to be filled.\n @param leftTakerAssetAmountRemaining The amount of the left taker asset that is remaining to be filled.\n @param rightMakerAssetAmountRemaining The amount of the right maker asset that is remaining to be filled.\n @param rightTakerAssetAmountRemaining The amount of the right taker asset that is remaining to be filled.\n @return MatchFillResults struct that does not include fees paid or spreads taken.", "id": 5448, "implemented": true, "kind": "function", "modifiers": [], "name": "_calculateCompleteFillBoth", "nodeType": "FunctionDefinition", "parameters": {"id": 5409, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5402, "name": "leftMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5448, "src": "19537:37:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5401, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19537:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5404, "name": "leftTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5448, "src": "19584:37:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5403, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19584:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5406, "name": "rightMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5448, "src": "19631:38:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5405, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19631:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5408, "name": "rightTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5448, "src": "19679:38:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5407, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19679:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "19527:196:38"}, "returnParameters": {"id": 5412, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5411, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 5448, "src": "19770:44:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 5410, "name": "MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4855, "src": "19770:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "19769:46:38"}, "scope": 5502, "src": "19492:790:38", "stateMutability": "pure", "superFunction": null, "visibility": "private"}, {"body": {"id": 5500, "nodeType": "Block", "src": "21271:790:38", "statements": [{"expression": {"argumentTypes": null, "id": 5465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5459, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5457, "src": "21281:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5462, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "21281:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5463, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "21281:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5464, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5452, "src": "21331:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "21281:80:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5466, "nodeType": "ExpressionStatement", "src": "21281:80:38"}, {"expression": {"argumentTypes": null, "id": 5473, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5467, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5457, "src": "21371:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5470, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "right", "nodeType": "MemberAccess", "referencedDeclaration": 4850, "src": "21371:24:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5471, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "21371:47:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5472, "name": "rightTakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5454, "src": "21421:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "21371:80:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5474, "nodeType": "ExpressionStatement", "src": "21371:80:38"}, {"expression": {"argumentTypes": null, "id": 5481, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5475, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5457, "src": "21461:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5478, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "21461:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5479, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "takerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4839, "src": "21461:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 5480, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5452, "src": "21510:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "21461:79:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5482, "nodeType": "ExpressionStatement", "src": "21461:79:38"}, {"expression": {"argumentTypes": null, "id": 5496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5483, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5457, "src": "21802:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "id": 5486, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "left", "nodeType": "MemberAccess", "referencedDeclaration": 4848, "src": "21802:23:38", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$4846_memory", "typeString": "struct LibFillResults.FillResults memory"}}, "id": 5487, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "makerAssetFilledAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4837, "src": "21802:46:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5490, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5450, "src": "21898:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5491, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5844, "src": "21898:26:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5492, "name": "leftOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5450, "src": "21938:9:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5493, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetAmount", "nodeType": "MemberAccess", "referencedDeclaration": 5846, "src": "21938:26:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5494, "name": "rightMakerAssetAmountRemaining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5452, "src": "21978:30:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5488, "name": "LibMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5780, "src": "21851:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMath_$5780_$", "typeString": "type(library LibMath)"}}, "id": 5489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeGetPartialAmountFloor", "nodeType": "MemberAccess", "referencedDeclaration": 5552, "src": "21851:33:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 5495, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "21851:167:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "21802:216:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5497, "nodeType": "ExpressionStatement", "src": "21802:216:38"}, {"expression": {"argumentTypes": null, "id": 5498, "name": "matchedFillResults", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5457, "src": "22036:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults memory"}}, "functionReturnParameters": 5458, "id": 5499, "nodeType": "Return", "src": "22029:25:38"}]}, "documentation": "@dev Calculates the fill results for the maker and taker in the order matching and writes the results\n to the fillResults that are being collected on the order.\n @param leftOrder The left order that is being maximally filled. All of the information about fill amounts\n can be derived from this order and the right asset remaining fields.\n @param rightMakerAssetAmountRemaining The amount of the right maker asset that is remaining to be filled.\n @param rightTakerAssetAmountRemaining The amount of the right taker asset that is remaining to be filled.\n @return MatchFillResults struct that does not include fees paid or spreads taken.", "id": 5501, "implemented": true, "kind": "function", "modifiers": [], "name": "_calculateCompleteRightFill", "nodeType": "FunctionDefinition", "parameters": {"id": 5455, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5450, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 5501, "src": "21041:31:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 5449, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5863, "src": "21041:14:38", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5452, "name": "rightMakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5501, "src": "21082:38:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5451, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21082:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5454, "name": "rightTakerAssetAmountRemaining", "nodeType": "VariableDeclaration", "scope": 5501, "src": "21130:38:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5453, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21130:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "21031:143:38"}, "returnParameters": {"id": 5458, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5457, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 5501, "src": "21221:44:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 5456, "name": "MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4855, "src": "21221:18:38", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$4855_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "21220:46:38"}, "scope": 5502, "src": "20995:1066:38", "stateMutability": "pure", "superFunction": null, "visibility": "private"}], "scope": 5503, "src": "716:21347:38"}], "src": "580:21484:38"}, "id": 38}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibMath.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-exchange-libs/contracts/src/LibMath.sol", "exportedSymbols": {"LibMath": [5780]}, "id": 5781, "nodeType": "SourceUnit", "nodes": [{"id": 5504, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:39"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol", "file": "@0x/contracts-utils/contracts/src/LibSafeMath.sol", "id": 5505, "nodeType": "ImportDirective", "scope": 5781, "sourceUnit": 11217, "src": "605:59:39", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "@0x/contracts-utils/contracts/src/LibRichErrors.sol", "id": 5506, "nodeType": "ImportDirective", "scope": 5781, "sourceUnit": 9873, "src": "665:61:39", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/contracts-exchange-libs/contracts/src/LibMathRichErrors.sol", "file": "./LibMathRichErrors.sol", "id": 5507, "nodeType": "ImportDirective", "scope": 5781, "sourceUnit": 5818, "src": "727:33:39", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 5780, "linearizedBaseContracts": [5780], "name": "LibMath", "nodeType": "ContractDefinition", "nodes": [{"id": 5510, "libraryName": {"contractScope": null, "id": 5508, "name": "LibSafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11216, "src": "792:11:39", "typeDescriptions": {"typeIdentifier": "t_contract$_LibSafeMath_$11216", "typeString": "library LibSafeMath"}}, "nodeType": "UsingForDirective", "src": "786:30:39", "typeName": {"id": 5509, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "808:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 5551, "nodeType": "Block", "src": "1336:408:39", "statements": [{"condition": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5522, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5512, "src": "1388:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5523, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5514, "src": "1415:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5524, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5516, "src": "1444:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5521, "name": "isRoundingErrorFloor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5712, "src": "1350:20:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256,uint256,uint256) pure returns (bool)"}}, "id": 5525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1350:110:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 5538, "nodeType": "IfStatement", "src": "1346:289:39", "trueBody": {"id": 5537, "nodeType": "Block", "src": "1462:173:39", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5531, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5512, "src": "1547:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5532, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5514, "src": "1574:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5533, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5516, "src": "1603:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5529, "name": "LibMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5817, "src": "1498:17:39", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMathRichErrors_$5817_$", "typeString": "type(library LibMathRichErrors)"}}, "id": 5530, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "RoundingError", "nodeType": "MemberAccess", "referencedDeclaration": 5816, "src": "1498:31:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256,uint256,uint256) pure returns (bytes memory)"}}, "id": 5534, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1498:125:39", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 5526, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "1476:13:39", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 5528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "1476:21:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 5535, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1476:148:39", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5536, "nodeType": "ExpressionStatement", "src": "1476:148:39"}]}}, {"expression": {"argumentTypes": null, "id": 5547, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5539, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5519, "src": "1645:13:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5545, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5514, "src": "1695:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5542, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5516, "src": "1679:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5540, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5512, "src": "1661:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "1661:17:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5543, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1661:25:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeDiv", "nodeType": "MemberAccess", "referencedDeclaration": 11113, "src": "1661:33:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1661:46:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1645:62:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5548, "nodeType": "ExpressionStatement", "src": "1645:62:39"}, {"expression": {"argumentTypes": null, "id": 5549, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5519, "src": "1724:13:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 5520, "id": 5550, "nodeType": "Return", "src": "1717:20:39"}]}, "documentation": "@dev Calculates partial value given a numerator and denominator rounded down.\n Reverts if rounding error is >= 0.1%\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to calculate partial of.\n @return Partial value of target rounded down.", "id": 5552, "implemented": true, "kind": "function", "modifiers": [], "name": "safeGetPartialAmountFloor", "nodeType": "FunctionDefinition", "parameters": {"id": 5517, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5512, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 5552, "src": "1185:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5511, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1185:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5514, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 5552, "src": "1212:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5513, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1212:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5516, "name": "target", "nodeType": "VariableDeclaration", "scope": 5552, "src": "1241:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5515, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1241:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1175:86:39"}, "returnParameters": {"id": 5520, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5519, "name": "partialAmount", "nodeType": "VariableDeclaration", "scope": 5552, "src": "1309:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5518, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1309:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1308:23:39"}, "scope": 5780, "src": "1141:603:39", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 5599, "nodeType": "Block", "src": "2261:653:39", "statements": [{"condition": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5564, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5554, "src": "2312:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5565, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5556, "src": "2339:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5566, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5558, "src": "2368:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5563, "name": "isRoundingErrorCeil", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5779, "src": "2275:19:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256,uint256,uint256) pure returns (bool)"}}, "id": 5567, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2275:109:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 5580, "nodeType": "IfStatement", "src": "2271:288:39", "trueBody": {"id": 5579, "nodeType": "Block", "src": "2386:173:39", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5573, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5554, "src": "2471:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5574, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5556, "src": "2498:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5575, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5558, "src": "2527:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5571, "name": "LibMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5817, "src": "2422:17:39", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMathRichErrors_$5817_$", "typeString": "type(library LibMathRichErrors)"}}, "id": 5572, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "RoundingError", "nodeType": "MemberAccess", "referencedDeclaration": 5816, "src": "2422:31:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256,uint256,uint256) pure returns (bytes memory)"}}, "id": 5576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2422:125:39", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 5568, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "2400:13:39", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 5570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "2400:21:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 5577, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2400:148:39", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5578, "nodeType": "ExpressionStatement", "src": "2400:148:39"}]}}, {"expression": {"argumentTypes": null, "id": 5595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5581, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5561, "src": "2756:13:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5593, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5556, "src": "2864:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "31", "id": 5589, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2839:1:39", "subdenomination": null, "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"}], "expression": {"argumentTypes": null, "id": 5587, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5556, "src": "2819:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "2819:19:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2819:22:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5584, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5558, "src": "2790:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5582, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5554, "src": "2772:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "2772:17:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2772:25:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "2772:46:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5591, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2772:70:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeDiv", "nodeType": "MemberAccess", "referencedDeclaration": 11113, "src": "2772:91:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2772:104:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2756:120:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5596, "nodeType": "ExpressionStatement", "src": "2756:120:39"}, {"expression": {"argumentTypes": null, "id": 5597, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5561, "src": "2894:13:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 5562, "id": 5598, "nodeType": "Return", "src": "2887:20:39"}]}, "documentation": "@dev Calculates partial value given a numerator and denominator rounded down.\n Reverts if rounding error is >= 0.1%\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to calculate partial of.\n @return Partial value of target rounded up.", "id": 5600, "implemented": true, "kind": "function", "modifiers": [], "name": "safeGetPartialAmountCeil", "nodeType": "FunctionDefinition", "parameters": {"id": 5559, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5554, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 5600, "src": "2110:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5553, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2110:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5556, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 5600, "src": "2137:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5555, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2137:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5558, "name": "target", "nodeType": "VariableDeclaration", "scope": 5600, "src": "2166:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5557, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2166:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2100:86:39"}, "returnParameters": {"id": 5562, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5561, "name": "partialAmount", "nodeType": "VariableDeclaration", "scope": 5600, "src": "2234:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5560, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2234:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2233:23:39"}, "scope": 5780, "src": "2067:847:39", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 5623, "nodeType": "Block", "src": "3380:109:39", "statements": [{"expression": {"argumentTypes": null, "id": 5619, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5611, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5609, "src": "3390:13:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5617, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5604, "src": "3440:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5614, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5606, "src": "3424:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5612, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5602, "src": "3406:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "3406:17:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5615, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3406:25:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeDiv", "nodeType": "MemberAccess", "referencedDeclaration": 11113, "src": "3406:33:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5618, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3406:46:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3390:62:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5620, "nodeType": "ExpressionStatement", "src": "3390:62:39"}, {"expression": {"argumentTypes": null, "id": 5621, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5609, "src": "3469:13:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 5610, "id": 5622, "nodeType": "Return", "src": "3462:20:39"}]}, "documentation": "@dev Calculates partial value given a numerator and denominator rounded down.\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to calculate partial of.\n @return Partial value of target rounded down.", "id": 5624, "implemented": true, "kind": "function", "modifiers": [], "name": "getPartialAmountFloor", "nodeType": "FunctionDefinition", "parameters": {"id": 5607, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5602, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 5624, "src": "3229:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5601, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3229:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5604, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 5624, "src": "3256:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5603, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3256:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5606, "name": "target", "nodeType": "VariableDeclaration", "scope": 5624, "src": "3285:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5605, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3285:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3219:86:39"}, "returnParameters": {"id": 5610, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5609, "name": "partialAmount", "nodeType": "VariableDeclaration", "scope": 5624, "src": "3353:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5608, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3353:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3352:23:39"}, "scope": 5780, "src": "3189:300:39", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 5653, "nodeType": "Block", "src": "3952:355:39", "statements": [{"expression": {"argumentTypes": null, "id": 5649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5635, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5633, "src": "4149:13:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5647, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5628, "src": "4257:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "31", "id": 5643, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4232:1:39", "subdenomination": null, "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"}], "expression": {"argumentTypes": null, "id": 5641, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5628, "src": "4212:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "4212:19:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5644, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4212:22:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5638, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5630, "src": "4183:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5636, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5626, "src": "4165:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "4165:17:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4165:25:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeAdd", "nodeType": "MemberAccess", "referencedDeclaration": 11181, "src": "4165:46:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5645, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4165:70:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5646, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeDiv", "nodeType": "MemberAccess", "referencedDeclaration": 11113, "src": "4165:91:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4165:104:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4149:120:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5650, "nodeType": "ExpressionStatement", "src": "4149:120:39"}, {"expression": {"argumentTypes": null, "id": 5651, "name": "partialAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5633, "src": "4287:13:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 5634, "id": 5652, "nodeType": "Return", "src": "4280:20:39"}]}, "documentation": "@dev Calculates partial value given a numerator and denominator rounded down.\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to calculate partial of.\n @return Partial value of target rounded up.", "id": 5654, "implemented": true, "kind": "function", "modifiers": [], "name": "getPartialAmountCeil", "nodeType": "FunctionDefinition", "parameters": {"id": 5631, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5626, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 5654, "src": "3801:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5625, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3801:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5628, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 5654, "src": "3828:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5627, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3828:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5630, "name": "target", "nodeType": "VariableDeclaration", "scope": 5654, "src": "3857:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5629, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3857:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3791:86:39"}, "returnParameters": {"id": 5634, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5633, "name": "partialAmount", "nodeType": "VariableDeclaration", "scope": 5654, "src": "3925:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5632, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3925:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3924:23:39"}, "scope": 5780, "src": "3762:545:39", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 5711, "nodeType": "Block", "src": "4747:1699:39", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5667, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5665, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5658, "src": "4761:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 5666, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4776:1:39", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4761:16:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 5677, "nodeType": "IfStatement", "src": "4757:109:39", "trueBody": {"id": 5676, "nodeType": "Block", "src": "4779:87:39", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 5671, "name": "LibMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5817, "src": "4815:17:39", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMathRichErrors_$5817_$", "typeString": "type(library LibMathRichErrors)"}}, "id": 5672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DivisionByZeroError", "nodeType": "MemberAccess", "referencedDeclaration": 5796, "src": "4815:37:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 5673, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4815:39:39", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 5668, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "4793:13:39", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 5670, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "4793:21:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 5674, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4793:62:39", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5675, "nodeType": "ExpressionStatement", "src": "4793:62:39"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 5684, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5680, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5678, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5660, "src": "5676:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 5679, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5686:1:39", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5676:11:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5681, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5656, "src": "5691:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 5682, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5704:1:39", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5691:14:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "5676:29:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 5688, "nodeType": "IfStatement", "src": "5672:72:39", "trueBody": {"id": 5687, "nodeType": "Block", "src": "5707:37:39", "statements": [{"expression": {"argumentTypes": null, "hexValue": "66616c7365", "id": 5685, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5728:5:39", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 5664, "id": 5686, "nodeType": "Return", "src": "5721:12:39"}]}}, {"assignments": [5690], "declarations": [{"constant": false, "id": 5690, "name": "remainder", "nodeType": "VariableDeclaration", "scope": 5711, "src": "6239:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5689, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6239:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 5696, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5692, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5660, "src": "6279:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5693, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5656, "src": "6299:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5694, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5658, "src": "6322:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5691, "name": "mulmod", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12092, "src": "6259:6:39", "typeDescriptions": {"typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 5695, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6259:84:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "6239:104:39"}, {"expression": {"argumentTypes": null, "id": 5707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5697, "name": "isError", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5663, "src": "6353:7:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5706, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "31303030", "id": 5700, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6381:4:39", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}, "value": "1000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}], "expression": {"argumentTypes": null, "id": 5698, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5690, "src": "6363:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5699, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "6363:17:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5701, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6363:23:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5704, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5660, "src": "6408:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5702, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5656, "src": "6390:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "6390:17:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5705, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6390:25:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6363:52:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6353:62:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5708, "nodeType": "ExpressionStatement", "src": "6353:62:39"}, {"expression": {"argumentTypes": null, "id": 5709, "name": "isError", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5663, "src": "6432:7:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 5664, "id": 5710, "nodeType": "Return", "src": "6425:14:39"}]}, "documentation": "@dev Checks if rounding error >= 0.1% when rounding down.\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to multiply with numerator/denominator.\n @return Rounding error is present.", "id": 5712, "implemented": true, "kind": "function", "modifiers": [], "name": "isRoundingErrorFloor", "nodeType": "FunctionDefinition", "parameters": {"id": 5661, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5656, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 5712, "src": "4605:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5655, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4605:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5658, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 5712, "src": "4632:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5657, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4632:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5660, "name": "target", "nodeType": "VariableDeclaration", "scope": 5712, "src": "4661:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5659, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4661:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "4595:86:39"}, "returnParameters": {"id": 5664, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5663, "name": "isError", "nodeType": "VariableDeclaration", "scope": 5712, "src": "4729:12:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5662, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4729:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "4728:14:39"}, "scope": 5780, "src": "4566:1880:39", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 5778, "nodeType": "Block", "src": "6883:757:39", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5723, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5716, "src": "6897:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 5724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6912:1:39", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6897:16:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 5735, "nodeType": "IfStatement", "src": "6893:109:39", "trueBody": {"id": 5734, "nodeType": "Block", "src": "6915:87:39", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 5729, "name": "LibMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5817, "src": "6951:17:39", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibMathRichErrors_$5817_$", "typeString": "type(library LibMathRichErrors)"}}, "id": 5730, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DivisionByZeroError", "nodeType": "MemberAccess", "referencedDeclaration": 5796, "src": "6951:37:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 5731, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6951:39:39", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 5726, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9872, "src": "6929:13:39", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$9872_$", "typeString": "type(library LibRichErrors)"}}, "id": 5728, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 9871, "src": "6929:21:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 5732, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6929:62:39", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5733, "nodeType": "ExpressionStatement", "src": "6929:62:39"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 5742, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5738, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5736, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5718, "src": "7066:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 5737, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7076:1:39", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7066:11:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5741, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 5739, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5714, "src": "7081:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 5740, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7094:1:39", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7081:14:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7066:29:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 5746, "nodeType": "IfStatement", "src": "7062:257:39", "trueBody": {"id": 5745, "nodeType": "Block", "src": "7097:222:39", "statements": [{"expression": {"argumentTypes": null, "hexValue": "66616c7365", "id": 5743, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7303:5:39", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 5722, "id": 5744, "nodeType": "Return", "src": "7296:12:39"}]}}, {"assignments": [5748], "declarations": [{"constant": false, "id": 5748, "name": "remainder", "nodeType": "VariableDeclaration", "scope": 5778, "src": "7367:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5747, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7367:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 5754, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5750, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5718, "src": "7407:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5751, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5714, "src": "7427:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5752, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5716, "src": "7450:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5749, "name": "mulmod", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12092, "src": "7387:6:39", "typeDescriptions": {"typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 5753, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7387:84:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "7367:104:39"}, {"expression": {"argumentTypes": null, "id": 5762, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5755, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5748, "src": "7481:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5758, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5748, "src": "7513:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5756, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5716, "src": "7493:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeSub", "nodeType": "MemberAccess", "referencedDeclaration": 11145, "src": "7493:19:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5759, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7493:30:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"argumentTypes": null, "id": 5760, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5716, "src": "7526:11:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7493:44:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7481:56:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5763, "nodeType": "ExpressionStatement", "src": "7481:56:39"}, {"expression": {"argumentTypes": null, "id": 5774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5764, "name": "isError", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5721, "src": "7547:7:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5773, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "31303030", "id": 5767, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7575:4:39", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}, "value": "1000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}], "expression": {"argumentTypes": null, "id": 5765, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5748, "src": "7557:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "7557:17:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5768, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7557:23:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5771, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5718, "src": "7602:6:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5769, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5714, "src": "7584:9:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5770, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeMul", "nodeType": "MemberAccess", "referencedDeclaration": 11077, "src": "7584:17:39", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 5772, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7584:25:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7557:52:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7547:62:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5775, "nodeType": "ExpressionStatement", "src": "7547:62:39"}, {"expression": {"argumentTypes": null, "id": 5776, "name": "isError", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5721, "src": "7626:7:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 5722, "id": 5777, "nodeType": "Return", "src": "7619:14:39"}]}, "documentation": "@dev Checks if rounding error >= 0.1% when rounding up.\n @param numerator Numerator.\n @param denominator Denominator.\n @param target Value to multiply with numerator/denominator.\n @return Rounding error is present.", "id": 5779, "implemented": true, "kind": "function", "modifiers": [], "name": "isRoundingErrorCeil", "nodeType": "FunctionDefinition", "parameters": {"id": 5719, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5714, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 5779, "src": "6741:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5713, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6741:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5716, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 5779, "src": "6768:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5715, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6768:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5718, "name": "target", "nodeType": "VariableDeclaration", "scope": 5779, "src": "6797:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5717, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6797:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "6731:86:39"}, "returnParameters": {"id": 5722, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5721, "name": "isError", "nodeType": "VariableDeclaration", "scope": 5779, "src": "6865:12:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5720, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6865:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "6864:14:39"}, "scope": 5780, "src": "6703:937:39", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 5781, "src": "763:6879:39"}], "src": "580:7063:39"}, "id": 39}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibMathRichErrors.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-exchange-libs/contracts/src/LibMathRichErrors.sol", "exportedSymbols": {"LibMathRichErrors": [5817]}, "id": 5818, "nodeType": "SourceUnit", "nodes": [{"id": 5782, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "0:23:40"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 5817, "linearizedBaseContracts": [5817], "name": "LibMathRichErrors", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 5785, "name": "DIVISION_BY_ZERO_ERROR", "nodeType": "VariableDeclaration", "scope": 5817, "src": "109:70:40", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes"}, "typeName": {"id": 5783, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "109:5:40", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": {"argumentTypes": null, "hexValue": "a791837c", "id": 5784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "166:13:40", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_3c32885641834b9a0e88a20cfe6ff1bfcd518d920d0f652120c2c3eb95ece132", "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"}, "value": null}, "visibility": "internal"}, {"constant": true, "id": 5788, "name": "ROUNDING_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 5817, "src": "253:69:40", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 5786, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "253:6:40", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783333396633646532", "id": 5787, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "312:10:40", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_866074082_by_1", "typeString": "int_const 866074082"}, "value": "0x339f3de2"}, "visibility": "internal"}, {"body": {"id": 5795, "nodeType": "Block", "src": "468:46:40", "statements": [{"expression": {"argumentTypes": null, "id": 5793, "name": "DIVISION_BY_ZERO_ERROR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5785, "src": "485:22:40", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "functionReturnParameters": 5792, "id": 5794, "nodeType": "Return", "src": "478:29:40"}]}, "documentation": null, "id": 5796, "implemented": true, "kind": "function", "modifiers": [], "name": "DivisionByZeroError", "nodeType": "FunctionDefinition", "parameters": {"id": 5789, "nodeType": "ParameterList", "parameters": [], "src": "400:2:40"}, "returnParameters": {"id": 5792, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5791, "name": "", "nodeType": "VariableDeclaration", "scope": 5796, "src": "450:12:40", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5790, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "450:5:40", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "449:14:40"}, "scope": 5817, "src": "372:142:40", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 5815, "nodeType": "Block", "src": "694:161:40", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5809, "name": "ROUNDING_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5788, "src": "747:23:40", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 5810, "name": "numerator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5798, "src": "784:9:40", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5811, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "807:11:40", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 5812, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "832:6:40", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 5807, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "711:3:40", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 5808, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "711:22:40", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 5813, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "711:137:40", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 5806, "id": 5814, "nodeType": "Return", "src": "704:144:40"}]}, "documentation": null, "id": 5816, "implemented": true, "kind": "function", "modifiers": [], "name": "RoundingError", "nodeType": "FunctionDefinition", "parameters": {"id": 5803, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5798, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 5816, "src": "552:17:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5797, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "552:7:40", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5800, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 5816, "src": "579:19:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5799, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "579:7:40", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5802, "name": "target", "nodeType": "VariableDeclaration", "scope": 5816, "src": "608:14:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5801, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "608:7:40", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "542:86:40"}, "returnParameters": {"id": 5806, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5805, "name": "", "nodeType": "VariableDeclaration", "scope": 5816, "src": "676:12:40", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5804, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "676:5:40", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "675:14:40"}, "scope": 5817, "src": "520:335:40", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 5818, "src": "26:831:40"}], "src": "0:858:40"}, "id": 40}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "exportedSymbols": {"LibOrder": [5928]}, "id": 5929, "nodeType": "SourceUnit", "nodes": [{"id": 5819, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:41"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol", "file": "@0x/contracts-utils/contracts/src/LibEIP712.sol", "id": 5820, "nodeType": "ImportDirective", "scope": 5929, "sourceUnit": 11641, "src": "605:57:41", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 5928, "linearizedBaseContracts": [5928], "name": "LibOrder", "nodeType": "ContractDefinition", "nodes": [{"id": 5823, "libraryName": {"contractScope": null, "id": 5821, "name": "LibOrder", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5928, "src": "695:8:41", "typeDescriptions": {"typeIdentifier": "t_contract$_LibOrder_$5928", "typeString": "library LibOrder"}}, "nodeType": "UsingForDirective", "src": "689:25:41", "typeName": {"contractScope": null, "id": 5822, "name": "Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5863, "src": "708:5:41", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_storage_ptr", "typeString": "struct LibOrder.Order"}}}, {"constant": true, "id": 5826, "name": "_EIP712_ORDER_SCHEMA_HASH", "nodeType": "VariableDeclaration", "scope": 5928, "src": "1360:128:41", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5824, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1360:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"argumentTypes": null, "hexValue": "307866383033323265623833373661616662363465616466386630643736323366323231333066643934393161323231653930326237313363623938346137353334", "id": 5825, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1422:66:41", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_112179127998652384479658782050138692812774837050354146812378168026641797379380_by_1", "typeString": "int_const 1121...(70 digits omitted)...9380"}, "value": "0xf80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a7534"}, "visibility": "internal"}, {"canonicalName": "LibOrder.OrderStatus", "id": 5834, "members": [{"id": 5827, "name": "INVALID", "nodeType": "EnumValue", "src": "1692:7:41"}, {"id": 5828, "name": "INVALID_MAKER_ASSET_AMOUNT", "nodeType": "EnumValue", "src": "1746:26:41"}, {"id": 5829, "name": "INVALID_TAKER_ASSET_AMOUNT", "nodeType": "EnumValue", "src": "1833:26:41"}, {"id": 5830, "name": "FILLABLE", "nodeType": "EnumValue", "src": "1920:8:41"}, {"id": 5831, "name": "EXPIRED", "nodeType": "EnumValue", "src": "1978:7:41"}, {"id": 5832, "name": "FULLY_FILLED", "nodeType": "EnumValue", "src": "2044:12:41"}, {"id": 5833, "name": "CANCELLED", "nodeType": "EnumValue", "src": "2106:9:41"}], "name": "OrderStatus", "nodeType": "EnumDefinition", "src": "1665:503:41"}, {"canonicalName": "LibOrder.Order", "id": 5863, "members": [{"constant": false, "id": 5836, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 5863, "src": "2276:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5835, "name": "address", "nodeType": "ElementaryTypeName", "src": "2276:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5838, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 5863, "src": "2351:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5837, "name": "address", "nodeType": "ElementaryTypeName", "src": "2351:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5840, "name": "feeRecipientAddress", "nodeType": "VariableDeclaration", "scope": 5863, "src": "2492:27:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5839, "name": "address", "nodeType": "ElementaryTypeName", "src": "2492:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5842, "name": "senderAddress", "nodeType": "VariableDeclaration", "scope": 5863, "src": "2588:21:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5841, "name": "address", "nodeType": "ElementaryTypeName", "src": "2588:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5844, "name": "makerAssetAmount", "nodeType": "VariableDeclaration", "scope": 5863, "src": "2772:24:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5843, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2772:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5846, "name": "takerAssetAmount", "nodeType": "VariableDeclaration", "scope": 5863, "src": "2884:24:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5845, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2884:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5848, "name": "makerFee", "nodeType": "VariableDeclaration", "scope": 5863, "src": "2995:16:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5847, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2995:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5850, "name": "takerFee", "nodeType": "VariableDeclaration", "scope": 5863, "src": "3094:16:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5849, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3094:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5852, "name": "expirationTimeSeconds", "nodeType": "VariableDeclaration", "scope": 5863, "src": "3193:29:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5851, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3193:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5854, "name": "salt", "nodeType": "VariableDeclaration", "scope": 5863, "src": "3281:12:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5853, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3281:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5856, "name": "makerAssetData", "nodeType": "VariableDeclaration", "scope": 5863, "src": "3387:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 5855, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3387:5:41", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5858, "name": "takerAssetData", "nodeType": "VariableDeclaration", "scope": 5863, "src": "3580:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 5857, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3580:5:41", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5860, "name": "makerFeeAssetData", "nodeType": "VariableDeclaration", "scope": 5863, "src": "3773:23:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 5859, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3773:5:41", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5862, "name": "takerFeeAssetData", "nodeType": "VariableDeclaration", "scope": 5863, "src": "3969:23:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 5861, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3969:5:41", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "name": "Order", "nodeType": "StructDefinition", "scope": 5928, "src": "2253:1909:41", "visibility": "public"}, {"canonicalName": "LibOrder.OrderInfo", "id": 5870, "members": [{"constant": false, "id": 5865, "name": "orderStatus", "nodeType": "VariableDeclaration", "scope": 5870, "src": "4294:23:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$5834", "typeString": "enum LibOrder.OrderStatus"}, "typeName": {"contractScope": null, "id": 5864, "name": "OrderStatus", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5834, "src": "4294:11:41", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$5834", "typeString": "enum LibOrder.OrderStatus"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5867, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 5870, "src": "4405:17:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5866, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4405:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5869, "name": "orderTakerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 5870, "src": "4523:35:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5868, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4523:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "OrderInfo", "nodeType": "StructDefinition", "scope": 5928, "src": "4267:348:41", "visibility": "public"}, {"body": {"id": 5891, "nodeType": "Block", "src": "4960:165:41", "statements": [{"expression": {"argumentTypes": null, "id": 5887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5879, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5877, "src": "4970:9:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5882, "name": "eip712ExchangeDomainHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5874, "src": "5023:24:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 5883, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5872, "src": "5061:5:41", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5884, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "getStructHash", "nodeType": "MemberAccess", "referencedDeclaration": 5927, "src": "5061:19:41", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$5863_memory_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_Order_$5863_memory_ptr_$", "typeString": "function (struct LibOrder.Order memory) pure returns (bytes32)"}}, "id": 5885, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5061:21:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 5880, "name": "LibEIP712", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11640, "src": "4982:9:41", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibEIP712_$11640_$", "typeString": "type(library LibEIP712)"}}, "id": 5881, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "hashEIP712Message", "nodeType": "MemberAccess", "referencedDeclaration": 11639, "src": "4982:27:41", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", "typeString": "function (bytes32,bytes32) pure returns (bytes32)"}}, "id": 5886, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4982:110:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "4970:122:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 5888, "nodeType": "ExpressionStatement", "src": "4970:122:41"}, {"expression": {"argumentTypes": null, "id": 5889, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5877, "src": "5109:9:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 5878, "id": 5890, "nodeType": "Return", "src": "5102:16:41"}]}, "documentation": "@dev Calculates the EIP712 typed data hash of an order with a given domain separator.\n @param order The order structure.\n @return EIP712 typed data hash of the order.", "id": 5892, "implemented": true, "kind": "function", "modifiers": [], "name": "getTypedDataHash", "nodeType": "FunctionDefinition", "parameters": {"id": 5875, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5872, "name": "order", "nodeType": "VariableDeclaration", "scope": 5892, "src": "4836:18:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 5871, "name": "Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5863, "src": "4836:5:41", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5874, "name": "eip712ExchangeDomainHash", "nodeType": "VariableDeclaration", "scope": 5892, "src": "4856:32:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5873, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4856:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "4835:54:41"}, "returnParameters": {"id": 5878, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5877, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 5892, "src": "4937:17:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5876, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4937:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "4936:19:41"}, "scope": 5928, "src": "4810:315:41", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 5926, "nodeType": "Block", "src": "5389:2555:41", "statements": [{"assignments": [5900], "declarations": [{"constant": false, "id": 5900, "name": "schemaHash", "nodeType": "VariableDeclaration", "scope": 5926, "src": "5399:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5899, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5399:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 5902, "initialValue": {"argumentTypes": null, "id": 5901, "name": "_EIP712_ORDER_SCHEMA_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5826, "src": "5420:25:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5399:46:41"}, {"assignments": [5904], "declarations": [{"constant": false, "id": 5904, "name": "makerAssetData", "nodeType": "VariableDeclaration", "scope": 5926, "src": "5455:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5903, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5455:5:41", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 5907, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5905, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5894, "src": "5485:5:41", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5906, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 5856, "src": "5485:20:41", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "5455:50:41"}, {"assignments": [5909], "declarations": [{"constant": false, "id": 5909, "name": "takerAssetData", "nodeType": "VariableDeclaration", "scope": 5926, "src": "5515:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5908, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5515:5:41", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 5912, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5910, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5894, "src": "5545:5:41", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5911, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 5858, "src": "5545:20:41", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "5515:50:41"}, {"assignments": [5914], "declarations": [{"constant": false, "id": 5914, "name": "makerFeeAssetData", "nodeType": "VariableDeclaration", "scope": 5926, "src": "5575:30:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5913, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5575:5:41", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 5917, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5915, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5894, "src": "5608:5:41", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5916, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "makerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 5860, "src": "5608:23:41", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "5575:56:41"}, {"assignments": [5919], "declarations": [{"constant": false, "id": 5919, "name": "takerFeeAssetData", "nodeType": "VariableDeclaration", "scope": 5926, "src": "5641:30:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5918, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5641:5:41", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 5922, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5920, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5894, "src": "5674:5:41", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order memory"}}, "id": 5921, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "takerFeeAssetData", "nodeType": "MemberAccess", "referencedDeclaration": 5862, "src": "5674:23:41", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "5641:56:41"}, {"externalReferences": [{"order": {"declaration": 5894, "isOffset": false, "isSlot": false, "src": "6571:5:41", "valueSize": 1}}, {"order": {"declaration": 5894, "isOffset": false, "isSlot": false, "src": "6735:5:41", "valueSize": 1}}, {"order": {"declaration": 5894, "isOffset": false, "isSlot": false, "src": "6774:5:41", "valueSize": 1}}, {"order": {"declaration": 5894, "isOffset": false, "isSlot": false, "src": "6894:5:41", "valueSize": 1}}, {"order": {"declaration": 5894, "isOffset": false, "isSlot": false, "src": "6814:5:41", "valueSize": 1}}, {"order": {"declaration": 5894, "isOffset": false, "isSlot": false, "src": "6854:5:41", "valueSize": 1}}, {"takerAssetData": {"declaration": 5909, "isOffset": false, "isSlot": false, "src": "7370:14:41", "valueSize": 1}}, {"schemaHash": {"declaration": 5900, "isOffset": false, "isSlot": false, "src": "7169:10:41", "valueSize": 1}}, {"makerAssetData": {"declaration": 5904, "isOffset": false, "isSlot": false, "src": "7247:14:41", "valueSize": 1}}, {"makerFeeAssetData": {"declaration": 5914, "isOffset": false, "isSlot": false, "src": "7496:17:41", "valueSize": 1}}, {"result": {"declaration": 5897, "isOffset": false, "isSlot": false, "src": "7691:6:41", "valueSize": 1}}, {"makerAssetData": {"declaration": 5904, "isOffset": false, "isSlot": false, "src": "7220:14:41", "valueSize": 1}}, {"takerAssetData": {"declaration": 5909, "isOffset": false, "isSlot": false, "src": "7343:14:41", "valueSize": 1}}, {"takerFeeAssetData": {"declaration": 5919, "isOffset": false, "isSlot": false, "src": "7622:17:41", "valueSize": 1}}, {"makerFeeAssetData": {"declaration": 5914, "isOffset": false, "isSlot": false, "src": "7466:17:41", "valueSize": 1}}, {"takerFeeAssetData": {"declaration": 5919, "isOffset": false, "isSlot": false, "src": "7592:17:41", "valueSize": 1}}], "id": 5923, "nodeType": "InlineAssembly", "operations": "{\n if lt(order, 32) { invalid() }\n let pos1 := sub(order, 32)\n let pos2 := add(order, 320)\n let pos3 := add(order, 352)\n let pos4 := add(order, 384)\n let pos5 := add(order, 416)\n let temp1 := mload(pos1)\n let temp2 := mload(pos2)\n let temp3 := mload(pos3)\n let temp4 := mload(pos4)\n let temp5 := mload(pos5)\n mstore(pos1, schemaHash)\n mstore(pos2, keccak256(add(makerAssetData, 32), mload(makerAssetData)))\n mstore(pos3, keccak256(add(takerAssetData, 32), mload(takerAssetData)))\n mstore(pos4, keccak256(add(makerFeeAssetData, 32), mload(makerFeeAssetData)))\n mstore(pos5, keccak256(add(takerFeeAssetData, 32), mload(takerFeeAssetData)))\n result := keccak256(pos1, 480)\n mstore(pos1, temp1)\n mstore(pos2, temp2)\n mstore(pos3, temp3)\n mstore(pos4, temp4)\n mstore(pos5, temp5)\n}", "src": "6448:1467:41"}, {"expression": {"argumentTypes": null, "id": 5924, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5897, "src": "7931:6:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 5898, "id": 5925, "nodeType": "Return", "src": "7924:13:41"}]}, "documentation": "@dev Calculates EIP712 hash of the order struct.\n @param order The order structure.\n @return EIP712 hash of the order struct.", "id": 5927, "implemented": true, "kind": "function", "modifiers": [], "name": "getStructHash", "nodeType": "FunctionDefinition", "parameters": {"id": 5895, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5894, "name": "order", "nodeType": "VariableDeclaration", "scope": 5927, "src": "5302:18:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 5893, "name": "Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5863, "src": "5302:5:41", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$5863_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}], "src": "5301:20:41"}, "returnParameters": {"id": 5898, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5897, "name": "result", "nodeType": "VariableDeclaration", "scope": 5927, "src": "5369:14:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5896, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5369:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "5368:16:41"}, "scope": 5928, "src": "5279:2665:41", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 5929, "src": "665:7281:41"}], "src": "580:7367:41"}, "id": 41}, "contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "exportedSymbols": {"LibZeroExTransaction": [6012]}, "id": 6013, "nodeType": "SourceUnit", "nodes": [{"id": 5930, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:42"}, {"id": 5931, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:42"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol", "file": "@0x/contracts-utils/contracts/src/LibEIP712.sol", "id": 5932, "nodeType": "ImportDirective", "scope": 6013, "sourceUnit": 11641, "src": "639:57:42", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 6012, "linearizedBaseContracts": [6012], "name": "LibZeroExTransaction", "nodeType": "ContractDefinition", "nodes": [{"id": 5935, "libraryName": {"contractScope": null, "id": 5933, "name": "LibZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6012, "src": "741:20:42", "typeDescriptions": {"typeIdentifier": "t_contract$_LibZeroExTransaction_$6012", "typeString": "library LibZeroExTransaction"}}, "nodeType": "UsingForDirective", "src": "735:49:42", "typeName": {"contractScope": null, "id": 5934, "name": "ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5949, "src": "766:17:42", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$5949_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}}, {"constant": true, "id": 5938, "name": "_EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH", "nodeType": "VariableDeclaration", "scope": 6012, "src": "1093:133:42", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5936, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1093:7:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"argumentTypes": null, "hexValue": "307865633639383136393830613361336361343535343431306536303235333935336539666633373562613435333661393861646661313563633731353431353038", "id": 5937, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1160:66:42", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_106932244377073024889118374392183388102606682592814568813348457896092663813384_by_1", "typeString": "int_const 1069...(70 digits omitted)...3384"}, "value": "0xec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508"}, "visibility": "internal"}, {"canonicalName": "LibZeroExTransaction.ZeroExTransaction", "id": 5949, "members": [{"constant": false, "id": 5940, "name": "salt", "nodeType": "VariableDeclaration", "scope": 5949, "src": "1268:12:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5939, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1268:7:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5942, "name": "expirationTimeSeconds", "nodeType": "VariableDeclaration", "scope": 5949, "src": "1370:29:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5941, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1370:7:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5944, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 5949, "src": "1464:16:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5943, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1464:7:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5946, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 5949, "src": "1566:21:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5945, "name": "address", "nodeType": "ElementaryTypeName", "src": "1566:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5948, "name": "data", "nodeType": "VariableDeclaration", "scope": 5949, "src": "1640:10:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 5947, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1640:5:42", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "name": "ZeroExTransaction", "nodeType": "StructDefinition", "scope": 6012, "src": "1233:471:42", "visibility": "public"}, {"body": {"id": 5970, "nodeType": "Block", "src": "2095:267:42", "statements": [{"expression": {"argumentTypes": null, "id": 5966, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 5958, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5956, "src": "2189:15:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 5961, "name": "eip712ExchangeDomainHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5953, "src": "2248:24:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 5962, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5951, "src": "2286:11:42", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$5949_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 5963, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "getStructHash", "nodeType": "MemberAccess", "referencedDeclaration": 6011, "src": "2286:25:42", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_ZeroExTransaction_$5949_memory_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_ZeroExTransaction_$5949_memory_ptr_$", "typeString": "function (struct LibZeroExTransaction.ZeroExTransaction memory) pure returns (bytes32)"}}, "id": 5964, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2286:27:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"argumentTypes": null, "id": 5959, "name": "LibEIP712", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11640, "src": "2207:9:42", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibEIP712_$11640_$", "typeString": "type(library LibEIP712)"}}, "id": 5960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "hashEIP712Message", "nodeType": "MemberAccess", "referencedDeclaration": 11639, "src": "2207:27:42", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", "typeString": "function (bytes32,bytes32) pure returns (bytes32)"}}, "id": 5965, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2207:116:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2189:134:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 5967, "nodeType": "ExpressionStatement", "src": "2189:134:42"}, {"expression": {"argumentTypes": null, "id": 5968, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5956, "src": "2340:15:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 5957, "id": 5969, "nodeType": "Return", "src": "2333:22:42"}]}, "documentation": "@dev Calculates the EIP712 typed data hash of a transaction with a given domain separator.\n @param transaction 0x transaction structure.\n @return EIP712 typed data hash of the transaction.", "id": 5971, "implemented": true, "kind": "function", "modifiers": [], "name": "getTypedDataHash", "nodeType": "FunctionDefinition", "parameters": {"id": 5954, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5951, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 5971, "src": "1947:36:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$5949_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 5950, "name": "ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5949, "src": "1947:17:42", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$5949_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 5953, "name": "eip712ExchangeDomainHash", "nodeType": "VariableDeclaration", "scope": 5971, "src": "1985:32:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5952, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1985:7:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "1946:72:42"}, "returnParameters": {"id": 5957, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5956, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 5971, "src": "2066:23:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5955, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2066:7:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "2065:25:42"}, "scope": 6012, "src": "1921:441:42", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6010, "nodeType": "Block", "src": "2670:1658:42", "statements": [{"assignments": [5979], "declarations": [{"constant": false, "id": 5979, "name": "schemaHash", "nodeType": "VariableDeclaration", "scope": 6010, "src": "2680:18:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5978, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2680:7:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 5981, "initialValue": {"argumentTypes": null, "id": 5980, "name": "_EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5938, "src": "2701:38:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "2680:59:42"}, {"assignments": [5983], "declarations": [{"constant": false, "id": 5983, "name": "data", "nodeType": "VariableDeclaration", "scope": 6010, "src": "2749:17:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5982, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2749:5:42", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "id": 5986, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5984, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5973, "src": "2769:11:42", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$5949_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 5985, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "data", "nodeType": "MemberAccess", "referencedDeclaration": 5948, "src": "2769:16:42", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2749:36:42"}, {"assignments": [5988], "declarations": [{"constant": false, "id": 5988, "name": "salt", "nodeType": "VariableDeclaration", "scope": 6010, "src": "2795:12:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2795:7:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 5991, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5989, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5973, "src": "2810:11:42", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$5949_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 5990, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "salt", "nodeType": "MemberAccess", "referencedDeclaration": 5940, "src": "2810:16:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2795:31:42"}, {"assignments": [5993], "declarations": [{"constant": false, "id": 5993, "name": "expirationTimeSeconds", "nodeType": "VariableDeclaration", "scope": 6010, "src": "2836:29:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5992, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2836:7:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 5996, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5994, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5973, "src": "2868:11:42", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$5949_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 5995, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expirationTimeSeconds", "nodeType": "MemberAccess", "referencedDeclaration": 5942, "src": "2868:33:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2836:65:42"}, {"assignments": [5998], "declarations": [{"constant": false, "id": 5998, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 6010, "src": "2911:16:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5997, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2911:7:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 6001, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 5999, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5973, "src": "2930:11:42", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$5949_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 6000, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "gasPrice", "nodeType": "MemberAccess", "referencedDeclaration": 5944, "src": "2930:20:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2911:39:42"}, {"assignments": [6003], "declarations": [{"constant": false, "id": 6003, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 6010, "src": "2960:21:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6002, "name": "address", "nodeType": "ElementaryTypeName", "src": "2960:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "id": 6006, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6004, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5973, "src": "2984:11:42", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$5949_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction memory"}}, "id": 6005, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "signerAddress", "nodeType": "MemberAccess", "referencedDeclaration": 5946, "src": "2984:25:42", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2960:49:42"}, {"externalReferences": [{"data": {"declaration": 5983, "isOffset": false, "isSlot": false, "src": "3406:4:42", "valueSize": 1}}, {"data": {"declaration": 5983, "isOffset": false, "isSlot": false, "src": "3423:4:42", "valueSize": 1}}, {"schemaHash": {"declaration": 5979, "isOffset": false, "isSlot": false, "src": "3535:10:42", "valueSize": 1}}, {"gasPrice": {"declaration": 5998, "isOffset": false, "isSlot": false, "src": "3901:8:42", "valueSize": 1}}, {"salt": {"declaration": 5988, "isOffset": false, "isSlot": false, "src": "3664:4:42", "valueSize": 1}}, {"result": {"declaration": 5976, "isOffset": false, "isSlot": false, "src": "4257:6:42", "valueSize": 1}}, {"expirationTimeSeconds": {"declaration": 5993, "isOffset": false, "isSlot": false, "src": "3774:21:42", "valueSize": 1}}, {"signerAddress": {"declaration": 6003, "isOffset": false, "isSlot": false, "src": "4020:13:42", "valueSize": 1}}], "id": 6007, "nodeType": "InlineAssembly", "operations": "{\n let dataHash := keccak256(add(data, 32), mload(data))\n let memPtr := mload(64)\n mstore(memPtr, schemaHash)\n mstore(add(memPtr, 32), salt)\n mstore(add(memPtr, 64), expirationTimeSeconds)\n mstore(add(memPtr, 96), gasPrice)\n mstore(add(memPtr, 128), and(signerAddress, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(memPtr, 160), dataHash)\n result := keccak256(memPtr, 192)\n}", "src": "3317:982:42"}, {"expression": {"argumentTypes": null, "id": 6008, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5976, "src": "4315:6:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 5977, "id": 6009, "nodeType": "Return", "src": "4308:13:42"}]}, "documentation": "@dev Calculates EIP712 hash of the 0x transaction struct.\n @param transaction 0x transaction structure.\n @return EIP712 hash of the transaction struct.", "id": 6011, "implemented": true, "kind": "function", "modifiers": [], "name": "getStructHash", "nodeType": "FunctionDefinition", "parameters": {"id": 5974, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5973, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 6011, "src": "2565:36:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$5949_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 5972, "name": "ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5949, "src": "2565:17:42", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$5949_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}], "src": "2564:38:42"}, "returnParameters": {"id": 5977, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5976, "name": "result", "nodeType": "VariableDeclaration", "scope": 6011, "src": "2650:14:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5975, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2650:7:42", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "2649:16:42"}, "scope": 6012, "src": "2542:1786:42", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 6013, "src": "699:3631:42"}], "src": "580:3751:42"}, "id": 42}, "contracts/exchange/contracts-staking/contracts/src/interfaces/IStaking.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-staking/contracts/src/interfaces/IStaking.sol", "exportedSymbols": {"IStaking": [6199]}, "id": 6200, "nodeType": "SourceUnit", "nodes": [{"id": 6014, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:43"}, {"id": 6015, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:43"}, {"absolutePath": "./contracts/exchange/contracts-erc20/contracts/src/interfaces/IEtherToken.sol", "file": "@0x/contracts-erc20/contracts/src/interfaces/IEtherToken.sol", "id": 6016, "nodeType": "ImportDirective", "scope": 6200, "sourceUnit": 11655, "src": "639:70:43", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/contracts-staking/contracts/src/interfaces/IStructs.sol", "file": "./IStructs.sol", "id": 6017, "nodeType": "ImportDirective", "scope": 6200, "sourceUnit": 6246, "src": "710:24:43", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/contracts-staking/contracts/src/interfaces/IZrxVault.sol", "file": "./IZrxVault.sol", "id": 6018, "nodeType": "ImportDirective", "scope": 6200, "sourceUnit": 6319, "src": "735:25:43", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 6199, "linearizedBaseContracts": [6199], "name": "IStaking", "nodeType": "ContractDefinition", "nodes": [{"body": null, "documentation": "@dev Adds a new exchange address\n @param addr Address of exchange contract to add", "id": 6023, "implemented": false, "kind": "function", "modifiers": [], "name": "addExchangeAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 6021, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6020, "name": "addr", "nodeType": "VariableDeclaration", "scope": 6023, "src": "914:12:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6019, "name": "address", "nodeType": "ElementaryTypeName", "src": "914:7:43", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "913:14:43"}, "returnParameters": {"id": 6022, "nodeType": "ParameterList", "parameters": [], "src": "944:0:43"}, "scope": 6199, "src": "886:59:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Create a new staking pool. The sender will be the operator of this pool.\n Note that an operator must be payable.\n @param operatorShare Portion of rewards owned by the operator, in ppm.\n @param addOperatorAsMaker Adds operator to the created pool as a maker for convenience iff true.\n @return poolId The unique pool id generated for this pool.", "id": 6032, "implemented": false, "kind": "function", "modifiers": [], "name": "createStakingPool", "nodeType": "FunctionDefinition", "parameters": {"id": 6028, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6025, "name": "operatorShare", "nodeType": "VariableDeclaration", "scope": 6032, "src": "1362:20:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 6024, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1362:6:43", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6027, "name": "addOperatorAsMaker", "nodeType": "VariableDeclaration", "scope": 6032, "src": "1384:23:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 6026, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1384:4:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "1361:47:43"}, "returnParameters": {"id": 6031, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6030, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6032, "src": "1443:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6029, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1443:7:43", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "1442:16:43"}, "scope": 6199, "src": "1335:124:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Decreases the operator share for the given pool (i.e. increases pool rewards for members).\n @param poolId Unique Id of pool.\n @param newOperatorShare The newly decreased percentage of any rewards owned by the operator.", "id": 6039, "implemented": false, "kind": "function", "modifiers": [], "name": "decreaseStakingPoolOperatorShare", "nodeType": "FunctionDefinition", "parameters": {"id": 6037, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6034, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6039, "src": "1753:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6033, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1753:7:43", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6036, "name": "newOperatorShare", "nodeType": "VariableDeclaration", "scope": 6039, "src": "1769:23:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 6035, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1769:6:43", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}], "src": "1752:41:43"}, "returnParameters": {"id": 6038, "nodeType": "ParameterList", "parameters": [], "src": "1810:0:43"}, "scope": 6199, "src": "1711:100:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Begins a new epoch, preparing the prior one for finalization.\n Throws if not enough time has passed between epochs or if the\n previous epoch was not fully finalized.\n @return numPoolsToFinalize The number of unfinalized pools.", "id": 6044, "implemented": false, "kind": "function", "modifiers": [], "name": "endEpoch", "nodeType": "FunctionDefinition", "parameters": {"id": 6040, "nodeType": "ParameterList", "parameters": [], "src": "2105:2:43"}, "returnParameters": {"id": 6043, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6042, "name": "", "nodeType": "VariableDeclaration", "scope": 6044, "src": "2142:7:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6041, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2142:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2141:9:43"}, "scope": 6199, "src": "2088:63:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Instantly finalizes a single pool that earned rewards in the previous\n epoch, crediting it rewards for members and withdrawing operator's\n rewards as WETH. This can be called by internal functions that need\n to finalize a pool immediately. Does nothing if the pool is already\n finalized or did not earn rewards in the previous epoch.\n @param poolId The pool ID to finalize.", "id": 6049, "implemented": false, "kind": "function", "modifiers": [], "name": "finalizePool", "nodeType": "FunctionDefinition", "parameters": {"id": 6047, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6046, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6049, "src": "2621:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6045, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2621:7:43", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "2620:16:43"}, "returnParameters": {"id": 6048, "nodeType": "ParameterList", "parameters": [], "src": "2653:0:43"}, "scope": 6199, "src": "2599:55:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Initialize storage owned by this contract.\n This function should not be called directly.\n The StakingProxy contract will call it in `attachStakingContract()`.", "id": 6052, "implemented": false, "kind": "function", "modifiers": [], "name": "init", "nodeType": "FunctionDefinition", "parameters": {"id": 6050, "nodeType": "ParameterList", "parameters": [], "src": "2869:2:43"}, "returnParameters": {"id": 6051, "nodeType": "ParameterList", "parameters": [], "src": "2888:0:43"}, "scope": 6199, "src": "2856:33:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Allows caller to join a staking pool as a maker.\n @param poolId Unique id of pool.", "id": 6057, "implemented": false, "kind": "function", "modifiers": [], "name": "joinStakingPoolAsMaker", "nodeType": "FunctionDefinition", "parameters": {"id": 6055, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6054, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6057, "src": "3030:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6053, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3030:7:43", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "3029:16:43"}, "returnParameters": {"id": 6056, "nodeType": "ParameterList", "parameters": [], "src": "3062:0:43"}, "scope": 6199, "src": "2998:65:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Moves stake between statuses: 'undelegated' or 'delegated'.\n Delegated stake can also be moved between pools.\n This change comes into effect next epoch.\n @param from status to move stake out of.\n @param to status to move stake into.\n @param amount of stake to move.", "id": 6066, "implemented": false, "kind": "function", "modifiers": [], "name": "moveStake", "nodeType": "FunctionDefinition", "parameters": {"id": 6064, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6059, "name": "from", "nodeType": "VariableDeclaration", "scope": 6066, "src": "3421:32:43", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_struct$_StakeInfo_$6234_calldata_ptr", "typeString": "struct IStructs.StakeInfo"}, "typeName": {"contractScope": null, "id": 6058, "name": "IStructs.StakeInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6234, "src": "3421:18:43", "typeDescriptions": {"typeIdentifier": "t_struct$_StakeInfo_$6234_storage_ptr", "typeString": "struct IStructs.StakeInfo"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6061, "name": "to", "nodeType": "VariableDeclaration", "scope": 6066, "src": "3463:30:43", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_struct$_StakeInfo_$6234_calldata_ptr", "typeString": "struct IStructs.StakeInfo"}, "typeName": {"contractScope": null, "id": 6060, "name": "IStructs.StakeInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6234, "src": "3463:18:43", "typeDescriptions": {"typeIdentifier": "t_struct$_StakeInfo_$6234_storage_ptr", "typeString": "struct IStructs.StakeInfo"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6063, "name": "amount", "nodeType": "VariableDeclaration", "scope": 6066, "src": "3503:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6062, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3503:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3411:112:43"}, "returnParameters": {"id": 6065, "nodeType": "ParameterList", "parameters": [], "src": "3540:0:43"}, "scope": 6199, "src": "3393:148:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Pays a protocol fee in ETH.\n @param makerAddress The address of the order's maker.\n @param payerAddress The address that is responsible for paying the protocol fee.\n @param protocolFee The amount of protocol fees that should be paid.", "id": 6075, "implemented": false, "kind": "function", "modifiers": [], "name": "payProtocolFee", "nodeType": "FunctionDefinition", "parameters": {"id": 6073, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6068, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 6075, "src": "3848:20:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6067, "name": "address", "nodeType": "ElementaryTypeName", "src": "3848:7:43", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6070, "name": "payerAddress", "nodeType": "VariableDeclaration", "scope": 6075, "src": "3878:20:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6069, "name": "address", "nodeType": "ElementaryTypeName", "src": "3878:7:43", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6072, "name": "protocolFee", "nodeType": "VariableDeclaration", "scope": 6075, "src": "3908:19:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6071, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3908:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3838:95:43"}, "returnParameters": {"id": 6074, "nodeType": "ParameterList", "parameters": [], "src": "3966:0:43"}, "scope": 6199, "src": "3815:152:43", "stateMutability": "payable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Removes an existing exchange address\n @param addr Address of exchange contract to remove", "id": 6080, "implemented": false, "kind": "function", "modifiers": [], "name": "removeExchangeAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 6078, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6077, "name": "addr", "nodeType": "VariableDeclaration", "scope": 6080, "src": "4113:12:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6076, "name": "address", "nodeType": "ElementaryTypeName", "src": "4113:7:43", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "4112:14:43"}, "returnParameters": {"id": 6079, "nodeType": "ParameterList", "parameters": [], "src": "4143:0:43"}, "scope": 6199, "src": "4082:62:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Set all configurable parameters at once.\n @param _epochDurationInSeconds Minimum seconds between epochs.\n @param _rewardDelegatedStakeWeight How much delegated stake is weighted vs operator stake, in ppm.\n @param _minimumPoolStake Minimum amount of stake required in a pool to collect rewards.\n @param _cobbDouglasAlphaNumerator Numerator for cobb douglas alpha factor.\n @param _cobbDouglasAlphaDenominator Denominator for cobb douglas alpha factor.", "id": 6093, "implemented": false, "kind": "function", "modifiers": [], "name": "setParams", "nodeType": "FunctionDefinition", "parameters": {"id": 6091, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6082, "name": "_epochDurationInSeconds", "nodeType": "VariableDeclaration", "scope": 6093, "src": "4676:31:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6081, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4676:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6084, "name": "_rewardDelegatedStakeWeight", "nodeType": "VariableDeclaration", "scope": 6093, "src": "4717:34:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 6083, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4717:6:43", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6086, "name": "_minimumPoolStake", "nodeType": "VariableDeclaration", "scope": 6093, "src": "4761:25:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6085, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4761:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6088, "name": "_cobbDouglasAlphaNumerator", "nodeType": "VariableDeclaration", "scope": 6093, "src": "4796:33:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 6087, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4796:6:43", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6090, "name": "_cobbDouglasAlphaDenominator", "nodeType": "VariableDeclaration", "scope": 6093, "src": "4839:35:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 6089, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4839:6:43", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}], "src": "4666:214:43"}, "returnParameters": {"id": 6092, "nodeType": "ParameterList", "parameters": [], "src": "4897:0:43"}, "scope": 6199, "src": "4648:250:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Stake ZRX tokens. Tokens are deposited into the ZRX Vault.\n Unstake to retrieve the ZRX. Stake is in the 'Active' status.\n @param amount of ZRX to stake.", "id": 6098, "implemented": false, "kind": "function", "modifiers": [], "name": "stake", "nodeType": "FunctionDefinition", "parameters": {"id": 6096, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6095, "name": "amount", "nodeType": "VariableDeclaration", "scope": 6098, "src": "5105:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6094, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5105:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "5104:16:43"}, "returnParameters": {"id": 6097, "nodeType": "ParameterList", "parameters": [], "src": "5137:0:43"}, "scope": 6199, "src": "5090:48:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Unstake. Tokens are withdrawn from the ZRX Vault and returned to\n the staker. Stake must be in the 'undelegated' status in both the\n current and next epoch in order to be unstaked.\n @param amount of ZRX to unstake.", "id": 6103, "implemented": false, "kind": "function", "modifiers": [], "name": "unstake", "nodeType": "FunctionDefinition", "parameters": {"id": 6101, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6100, "name": "amount", "nodeType": "VariableDeclaration", "scope": 6103, "src": "5420:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6099, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5420:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "5419:16:43"}, "returnParameters": {"id": 6102, "nodeType": "ParameterList", "parameters": [], "src": "5452:0:43"}, "scope": 6199, "src": "5403:50:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Withdraws the caller's WETH rewards that have accumulated\n until the last epoch.\n @param poolId Unique id of pool.", "id": 6108, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawDelegatorRewards", "nodeType": "FunctionDefinition", "parameters": {"id": 6106, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6105, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6108, "src": "5640:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6104, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5640:7:43", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "5639:16:43"}, "returnParameters": {"id": 6107, "nodeType": "ParameterList", "parameters": [], "src": "5672:0:43"}, "scope": 6199, "src": "5606:67:43", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Computes the reward balance in ETH of a specific member of a pool.\n @param poolId Unique id of pool.\n @param member The member of the pool.\n @return totalReward Balance in ETH.", "id": 6117, "implemented": false, "kind": "function", "modifiers": [], "name": "computeRewardBalanceOfDelegator", "nodeType": "FunctionDefinition", "parameters": {"id": 6113, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6110, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6117, "src": "5931:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6109, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5931:7:43", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6112, "name": "member", "nodeType": "VariableDeclaration", "scope": 6117, "src": "5947:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6111, "name": "address", "nodeType": "ElementaryTypeName", "src": "5947:7:43", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "5930:32:43"}, "returnParameters": {"id": 6116, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6115, "name": "reward", "nodeType": "VariableDeclaration", "scope": 6117, "src": "6010:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6114, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6010:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "6009:16:43"}, "scope": 6199, "src": "5890:136:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Computes the reward balance in ETH of the operator of a pool.\n @param poolId Unique id of pool.\n @return totalReward Balance in ETH.", "id": 6124, "implemented": false, "kind": "function", "modifiers": [], "name": "computeRewardBalanceOfOperator", "nodeType": "FunctionDefinition", "parameters": {"id": 6120, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6119, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6124, "src": "6232:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6118, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6232:7:43", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "6231:16:43"}, "returnParameters": {"id": 6123, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6122, "name": "reward", "nodeType": "VariableDeclaration", "scope": 6124, "src": "6295:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6121, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6295:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "6294:16:43"}, "scope": 6199, "src": "6192:119:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns the earliest end time in seconds of this epoch.\n The next epoch can begin once this time is reached.\n Epoch period = [startTimeInSeconds..endTimeInSeconds)\n @return Time in seconds.", "id": 6129, "implemented": false, "kind": "function", "modifiers": [], "name": "getCurrentEpochEarliestEndTimeInSeconds", "nodeType": "FunctionDefinition", "parameters": {"id": 6125, "nodeType": "ParameterList", "parameters": [], "src": "6599:2:43"}, "returnParameters": {"id": 6128, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6127, "name": "", "nodeType": "VariableDeclaration", "scope": 6129, "src": "6649:7:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6126, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6649:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "6648:9:43"}, "scope": 6199, "src": "6551:107:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Gets global stake for a given status.\n @param stakeStatus UNDELEGATED or DELEGATED\n @return Global stake for given status.", "id": 6136, "implemented": false, "kind": "function", "modifiers": [], "name": "getGlobalStakeByStatus", "nodeType": "FunctionDefinition", "parameters": {"id": 6132, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6131, "name": "stakeStatus", "nodeType": "VariableDeclaration", "scope": 6136, "src": "6846:32:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$6229", "typeString": "enum IStructs.StakeStatus"}, "typeName": {"contractScope": null, "id": 6130, "name": "IStructs.StakeStatus", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6229, "src": "6846:20:43", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$6229", "typeString": "enum IStructs.StakeStatus"}}, "value": null, "visibility": "internal"}], "src": "6845:34:43"}, "returnParameters": {"id": 6135, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6134, "name": "balance", "nodeType": "VariableDeclaration", "scope": 6136, "src": "6927:37:43", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$6226_memory_ptr", "typeString": "struct IStructs.StoredBalance"}, "typeName": {"contractScope": null, "id": 6133, "name": "IStructs.StoredBalance", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6226, "src": "6927:22:43", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$6226_storage_ptr", "typeString": "struct IStructs.StoredBalance"}}, "value": null, "visibility": "internal"}], "src": "6926:39:43"}, "scope": 6199, "src": "6814:152:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Gets an owner's stake balances by status.\n @param staker Owner of stake.\n @param stakeStatus UNDELEGATED or DELEGATED\n @return Owner's stake balances for given status.", "id": 6145, "implemented": false, "kind": "function", "modifiers": [], "name": "getOwnerStakeByStatus", "nodeType": "FunctionDefinition", "parameters": {"id": 6141, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6138, "name": "staker", "nodeType": "VariableDeclaration", "scope": 6145, "src": "7214:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6137, "name": "address", "nodeType": "ElementaryTypeName", "src": "7214:7:43", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6140, "name": "stakeStatus", "nodeType": "VariableDeclaration", "scope": 6145, "src": "7238:32:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$6229", "typeString": "enum IStructs.StakeStatus"}, "typeName": {"contractScope": null, "id": 6139, "name": "IStructs.StakeStatus", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6229, "src": "7238:20:43", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$6229", "typeString": "enum IStructs.StakeStatus"}}, "value": null, "visibility": "internal"}], "src": "7204:72:43"}, "returnParameters": {"id": 6144, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6143, "name": "balance", "nodeType": "VariableDeclaration", "scope": 6145, "src": "7324:37:43", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$6226_memory_ptr", "typeString": "struct IStructs.StoredBalance"}, "typeName": {"contractScope": null, "id": 6142, "name": "IStructs.StoredBalance", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6226, "src": "7324:22:43", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$6226_storage_ptr", "typeString": "struct IStructs.StoredBalance"}}, "value": null, "visibility": "internal"}], "src": "7323:39:43"}, "scope": 6199, "src": "7174:189:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Retrieves all configurable parameter values.\n @return _epochDurationInSeconds Minimum seconds between epochs.\n @return _rewardDelegatedStakeWeight How much delegated stake is weighted vs operator stake, in ppm.\n @return _minimumPoolStake Minimum amount of stake required in a pool to collect rewards.\n @return _cobbDouglasAlphaNumerator Numerator for cobb douglas alpha factor.\n @return _cobbDouglasAlphaDenominator Denominator for cobb douglas alpha factor.", "id": 6158, "implemented": false, "kind": "function", "modifiers": [], "name": "getParams", "nodeType": "FunctionDefinition", "parameters": {"id": 6146, "nodeType": "ParameterList", "parameters": [], "src": "7894:2:43"}, "returnParameters": {"id": 6157, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6148, "name": "_epochDurationInSeconds", "nodeType": "VariableDeclaration", "scope": 6158, "src": "7957:31:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6147, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7957:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6150, "name": "_rewardDelegatedStakeWeight", "nodeType": "VariableDeclaration", "scope": 6158, "src": "8002:34:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 6149, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "8002:6:43", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6152, "name": "_minimumPoolStake", "nodeType": "VariableDeclaration", "scope": 6158, "src": "8050:25:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6151, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8050:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6154, "name": "_cobbDouglasAlphaNumerator", "nodeType": "VariableDeclaration", "scope": 6158, "src": "8089:33:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 6153, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "8089:6:43", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6156, "name": "_cobbDouglasAlphaDenominator", "nodeType": "VariableDeclaration", "scope": 6158, "src": "8136:35:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 6155, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "8136:6:43", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}], "src": "7943:238:43"}, "scope": 6199, "src": "7876:306:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@param staker of stake.\n @param poolId Unique Id of pool.\n @return Stake delegated to pool by staker.", "id": 6167, "implemented": false, "kind": "function", "modifiers": [], "name": "getStakeDelegatedToPoolByOwner", "nodeType": "FunctionDefinition", "parameters": {"id": 6163, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6160, "name": "staker", "nodeType": "VariableDeclaration", "scope": 6167, "src": "8352:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6159, "name": "address", "nodeType": "ElementaryTypeName", "src": "8352:7:43", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6162, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6167, "src": "8368:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6161, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8368:7:43", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "8351:32:43"}, "returnParameters": {"id": 6166, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6165, "name": "balance", "nodeType": "VariableDeclaration", "scope": 6167, "src": "8431:37:43", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$6226_memory_ptr", "typeString": "struct IStructs.StoredBalance"}, "typeName": {"contractScope": null, "id": 6164, "name": "IStructs.StoredBalance", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6226, "src": "8431:22:43", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$6226_storage_ptr", "typeString": "struct IStructs.StoredBalance"}}, "value": null, "visibility": "internal"}], "src": "8430:39:43"}, "scope": 6199, "src": "8312:158:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns a staking pool\n @param poolId Unique id of pool.", "id": 6174, "implemented": false, "kind": "function", "modifiers": [], "name": "getStakingPool", "nodeType": "FunctionDefinition", "parameters": {"id": 6170, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6169, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6174, "src": "8577:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6168, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8577:7:43", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "8576:16:43"}, "returnParameters": {"id": 6173, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6172, "name": "", "nodeType": "VariableDeclaration", "scope": 6174, "src": "8640:20:43", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Pool_$6244_memory_ptr", "typeString": "struct IStructs.Pool"}, "typeName": {"contractScope": null, "id": 6171, "name": "IStructs.Pool", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6244, "src": "8640:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Pool_$6244_storage_ptr", "typeString": "struct IStructs.Pool"}}, "value": null, "visibility": "internal"}], "src": "8639:22:43"}, "scope": 6199, "src": "8553:109:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Get stats on a staking pool in this epoch.\n @param poolId Pool Id to query.\n @return PoolStats struct for pool id.", "id": 6181, "implemented": false, "kind": "function", "modifiers": [], "name": "getStakingPoolStatsThisEpoch", "nodeType": "FunctionDefinition", "parameters": {"id": 6177, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6176, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6181, "src": "8848:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6175, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8848:7:43", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "8847:16:43"}, "returnParameters": {"id": 6180, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6179, "name": "", "nodeType": "VariableDeclaration", "scope": 6181, "src": "8911:25:43", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_PoolStats_$6208_memory_ptr", "typeString": "struct IStructs.PoolStats"}, "typeName": {"contractScope": null, "id": 6178, "name": "IStructs.PoolStats", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6208, "src": "8911:18:43", "typeDescriptions": {"typeIdentifier": "t_struct$_PoolStats_$6208_storage_ptr", "typeString": "struct IStructs.PoolStats"}}, "value": null, "visibility": "internal"}], "src": "8910:27:43"}, "scope": 6199, "src": "8810:128:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns the total stake delegated to a specific staking pool,\n across all members.\n @param poolId Unique Id of pool.\n @return Total stake delegated to pool.", "id": 6188, "implemented": false, "kind": "function", "modifiers": [], "name": "getTotalStakeDelegatedToPool", "nodeType": "FunctionDefinition", "parameters": {"id": 6184, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6183, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6188, "src": "9178:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6182, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9178:7:43", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "9177:16:43"}, "returnParameters": {"id": 6187, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6186, "name": "balance", "nodeType": "VariableDeclaration", "scope": 6188, "src": "9241:37:43", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$6226_memory_ptr", "typeString": "struct IStructs.StoredBalance"}, "typeName": {"contractScope": null, "id": 6185, "name": "IStructs.StoredBalance", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6226, "src": "9241:22:43", "typeDescriptions": {"typeIdentifier": "t_struct$_StoredBalance_$6226_storage_ptr", "typeString": "struct IStructs.StoredBalance"}}, "value": null, "visibility": "internal"}], "src": "9240:39:43"}, "scope": 6199, "src": "9140:140:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev An overridable way to access the deployed WETH contract.\n Must be view to allow overrides to access state.\n @return wethContract The WETH contract instance.", "id": 6193, "implemented": false, "kind": "function", "modifiers": [], "name": "getWethContract", "nodeType": "FunctionDefinition", "parameters": {"id": 6189, "nodeType": "ParameterList", "parameters": [], "src": "9499:2:43"}, "returnParameters": {"id": 6192, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6191, "name": "wethContract", "nodeType": "VariableDeclaration", "scope": 6193, "src": "9549:24:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IEtherToken_$11654", "typeString": "contract IEtherToken"}, "typeName": {"contractScope": null, "id": 6190, "name": "IEtherToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11654, "src": "9549:11:43", "typeDescriptions": {"typeIdentifier": "t_contract$_IEtherToken_$11654", "typeString": "contract IEtherToken"}}, "value": null, "visibility": "internal"}], "src": "9548:26:43"}, "scope": 6199, "src": "9475:100:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev An overridable way to access the deployed zrxVault.\n Must be view to allow overrides to access state.\n @return zrxVault The zrxVault contract.", "id": 6198, "implemented": false, "kind": "function", "modifiers": [], "name": "getZrxVault", "nodeType": "FunctionDefinition", "parameters": {"id": 6194, "nodeType": "ParameterList", "parameters": [], "src": "9776:2:43"}, "returnParameters": {"id": 6197, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6196, "name": "zrxVault", "nodeType": "VariableDeclaration", "scope": 6198, "src": "9826:18:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IZrxVault_$6318", "typeString": "contract IZrxVault"}, "typeName": {"contractScope": null, "id": 6195, "name": "IZrxVault", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6318, "src": "9826:9:43", "typeDescriptions": {"typeIdentifier": "t_contract$_IZrxVault_$6318", "typeString": "contract IZrxVault"}}, "value": null, "visibility": "internal"}], "src": "9825:20:43"}, "scope": 6199, "src": "9756:90:43", "stateMutability": "view", "superFunction": null, "visibility": "external"}], "scope": 6200, "src": "763:9085:43"}], "src": "580:9269:43"}, "id": 43}, "contracts/exchange/contracts-staking/contracts/src/interfaces/IStructs.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-staking/contracts/src/interfaces/IStructs.sol", "exportedSymbols": {"IStructs": [6245]}, "id": 6246, "nodeType": "SourceUnit", "nodes": [{"id": 6201, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:44"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": null, "fullyImplemented": true, "id": 6245, "linearizedBaseContracts": [6245], "name": "IStructs", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "IStructs.PoolStats", "id": 6208, "members": [{"constant": false, "id": 6203, "name": "feesCollected", "nodeType": "VariableDeclaration", "scope": 6208, "src": "912:21:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6202, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "912:7:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6205, "name": "weightedStake", "nodeType": "VariableDeclaration", "scope": 6208, "src": "943:21:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6204, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "943:7:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6207, "name": "membersStake", "nodeType": "VariableDeclaration", "scope": 6208, "src": "974:20:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6206, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "974:7:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "PoolStats", "nodeType": "StructDefinition", "scope": 6245, "src": "885:116:44", "visibility": "public"}, {"canonicalName": "IStructs.AggregatedStats", "id": 6219, "members": [{"constant": false, "id": 6210, "name": "rewardsAvailable", "nodeType": "VariableDeclaration", "scope": 6219, "src": "1691:24:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6209, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1691:7:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6212, "name": "numPoolsToFinalize", "nodeType": "VariableDeclaration", "scope": 6219, "src": "1725:26:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6211, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1725:7:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6214, "name": "totalFeesCollected", "nodeType": "VariableDeclaration", "scope": 6219, "src": "1761:26:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6213, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1761:7:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6216, "name": "totalWeightedStake", "nodeType": "VariableDeclaration", "scope": 6219, "src": "1797:26:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6215, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1797:7:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6218, "name": "totalRewardsFinalized", "nodeType": "VariableDeclaration", "scope": 6219, "src": "1833:29:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6217, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1833:7:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "AggregatedStats", "nodeType": "StructDefinition", "scope": 6245, "src": "1658:211:44", "visibility": "public"}, {"canonicalName": "IStructs.StoredBalance", "id": 6226, "members": [{"constant": false, "id": 6221, "name": "currentEpoch", "nodeType": "VariableDeclaration", "scope": 6226, "src": "2254:19:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 6220, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2254:6:44", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6223, "name": "currentEpochBalance", "nodeType": "VariableDeclaration", "scope": 6226, "src": "2283:26:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint96", "typeString": "uint96"}, "typeName": {"id": 6222, "name": "uint96", "nodeType": "ElementaryTypeName", "src": "2283:6:44", "typeDescriptions": {"typeIdentifier": "t_uint96", "typeString": "uint96"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6225, "name": "nextEpochBalance", "nodeType": "VariableDeclaration", "scope": 6226, "src": "2319:23:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint96", "typeString": "uint96"}, "typeName": {"id": 6224, "name": "uint96", "nodeType": "ElementaryTypeName", "src": "2319:6:44", "typeDescriptions": {"typeIdentifier": "t_uint96", "typeString": "uint96"}}, "value": null, "visibility": "internal"}], "name": "StoredBalance", "nodeType": "StructDefinition", "scope": 6245, "src": "2223:126:44", "visibility": "public"}, {"canonicalName": "IStructs.StakeStatus", "id": 6229, "members": [{"id": 6227, "name": "UNDELEGATED", "nodeType": "EnumValue", "src": "2603:11:44"}, {"id": 6228, "name": "DELEGATED", "nodeType": "EnumValue", "src": "2624:9:44"}], "name": "StakeStatus", "nodeType": "EnumDefinition", "src": "2576:63:44"}, {"canonicalName": "IStructs.StakeInfo", "id": 6234, "members": [{"constant": false, "id": 6231, "name": "status", "nodeType": "VariableDeclaration", "scope": 6234, "src": "2836:18:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$6229", "typeString": "enum IStructs.StakeStatus"}, "typeName": {"contractScope": null, "id": 6230, "name": "StakeStatus", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6229, "src": "2836:11:44", "typeDescriptions": {"typeIdentifier": "t_enum$_StakeStatus_$6229", "typeString": "enum IStructs.StakeStatus"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6233, "name": "poolId", "nodeType": "VariableDeclaration", "scope": 6234, "src": "2864:14:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6232, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2864:7:44", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "name": "StakeInfo", "nodeType": "StructDefinition", "scope": 6245, "src": "2809:76:44", "visibility": "public"}, {"canonicalName": "IStructs.Fraction", "id": 6239, "members": [{"constant": false, "id": 6236, "name": "numerator", "nodeType": "VariableDeclaration", "scope": 6239, "src": "3062:17:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6235, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3062:7:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6238, "name": "denominator", "nodeType": "VariableDeclaration", "scope": 6239, "src": "3089:19:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6237, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3089:7:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "name": "Fraction", "nodeType": "StructDefinition", "scope": 6245, "src": "3036:79:44", "visibility": "public"}, {"canonicalName": "IStructs.Pool", "id": 6244, "members": [{"constant": false, "id": 6241, "name": "operator", "nodeType": "VariableDeclaration", "scope": 6244, "src": "3331:16:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6240, "name": "address", "nodeType": "ElementaryTypeName", "src": "3331:7:44", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6243, "name": "operatorShare", "nodeType": "VariableDeclaration", "scope": 6244, "src": "3357:20:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 6242, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "3357:6:44", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "value": null, "visibility": "internal"}], "name": "Pool", "nodeType": "StructDefinition", "scope": 6245, "src": "3309:75:44", "visibility": "public"}], "scope": 6246, "src": "606:2780:44"}], "src": "580:2807:44"}, "id": 44}, "contracts/exchange/contracts-staking/contracts/src/interfaces/IZrxVault.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-staking/contracts/src/interfaces/IZrxVault.sol", "exportedSymbols": {"IZrxVault": [6318]}, "id": 6319, "nodeType": "SourceUnit", "nodes": [{"id": 6247, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:45"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 6318, "linearizedBaseContracts": [6318], "name": "IZrxVault", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": "@dev Emmitted whenever a StakingProxy is set in a vault.", "id": 6251, "name": "StakingProxySet", "nodeType": "EventDefinition", "parameters": {"id": 6250, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6249, "indexed": false, "name": "stakingProxyAddress", "nodeType": "VariableDeclaration", "scope": 6251, "src": "720:27:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6248, "name": "address", "nodeType": "ElementaryTypeName", "src": "720:7:45", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "719:29:45"}, "src": "698:51:45"}, {"anonymous": false, "documentation": "@dev Emitted when the Staking contract is put into Catastrophic Failure Mode\n @param sender Address of sender (`msg.sender`)", "id": 6255, "name": "InCatastrophicFailureMode", "nodeType": "EventDefinition", "parameters": {"id": 6254, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6253, "indexed": false, "name": "sender", "nodeType": "VariableDeclaration", "scope": 6255, "src": "927:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6252, "name": "address", "nodeType": "ElementaryTypeName", "src": "927:7:45", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "926:16:45"}, "src": "895:48:45"}, {"anonymous": false, "documentation": "@dev Emitted when Zrx Tokens are deposited into the vault.\n @param staker of Zrx Tokens.\n @param amount of Zrx Tokens deposited.", "id": 6261, "name": "Deposit", "nodeType": "EventDefinition", "parameters": {"id": 6260, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6257, "indexed": true, "name": "staker", "nodeType": "VariableDeclaration", "scope": 6261, "src": "1123:22:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6256, "name": "address", "nodeType": "ElementaryTypeName", "src": "1123:7:45", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6259, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", "scope": 6261, "src": "1155:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6258, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1155:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1113:62:45"}, "src": "1100:76:45"}, {"anonymous": false, "documentation": "@dev Emitted when Zrx Tokens are withdrawn from the vault.\n @param staker of Zrx Tokens.\n @param amount of Zrx Tokens withdrawn.", "id": 6267, "name": "Withdraw", "nodeType": "EventDefinition", "parameters": {"id": 6266, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6263, "indexed": true, "name": "staker", "nodeType": "VariableDeclaration", "scope": 6267, "src": "1357:22:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6262, "name": "address", "nodeType": "ElementaryTypeName", "src": "1357:7:45", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6265, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", "scope": 6267, "src": "1389:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6264, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1389:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1347:62:45"}, "src": "1333:77:45"}, {"anonymous": false, "documentation": "@dev Emitted whenever the ZRX AssetProxy is set.", "id": 6271, "name": "ZrxProxySet", "nodeType": "EventDefinition", "parameters": {"id": 6270, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6269, "indexed": false, "name": "zrxProxyAddress", "nodeType": "VariableDeclaration", "scope": 6271, "src": "1491:23:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6268, "name": "address", "nodeType": "ElementaryTypeName", "src": "1491:7:45", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1490:25:45"}, "src": "1473:43:45"}, {"body": null, "documentation": "@dev Sets the address of the StakingProxy contract.\n Note that only the contract staker can call this function.\n @param _stakingProxyAddress Address of Staking proxy contract.", "id": 6276, "implemented": false, "kind": "function", "modifiers": [], "name": "setStakingProxy", "nodeType": "FunctionDefinition", "parameters": {"id": 6274, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6273, "name": "_stakingProxyAddress", "nodeType": "VariableDeclaration", "scope": 6276, "src": "1745:28:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6272, "name": "address", "nodeType": "ElementaryTypeName", "src": "1745:7:45", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1744:30:45"}, "returnParameters": {"id": 6275, "nodeType": "ParameterList", "parameters": [], "src": "1791:0:45"}, "scope": 6318, "src": "1720:72:45", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Vault enters into Catastrophic Failure Mode.\n *** WARNING - ONCE IN CATOSTROPHIC FAILURE MODE, YOU CAN NEVER GO BACK! ***\n Note that only the contract staker can call this function.", "id": 6279, "implemented": false, "kind": "function", "modifiers": [], "name": "enterCatastrophicFailure", "nodeType": "FunctionDefinition", "parameters": {"id": 6277, "nodeType": "ParameterList", "parameters": [], "src": "2040:2:45"}, "returnParameters": {"id": 6278, "nodeType": "ParameterList", "parameters": [], "src": "2059:0:45"}, "scope": 6318, "src": "2007:53:45", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Sets the Zrx proxy.\n Note that only the contract staker can call this.\n Note that this can only be called when *not* in Catastrophic Failure mode.\n @param zrxProxyAddress Address of the 0x Zrx Proxy.", "id": 6284, "implemented": false, "kind": "function", "modifiers": [], "name": "setZrxProxy", "nodeType": "FunctionDefinition", "parameters": {"id": 6282, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6281, "name": "zrxProxyAddress", "nodeType": "VariableDeclaration", "scope": 6284, "src": "2321:23:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6280, "name": "address", "nodeType": "ElementaryTypeName", "src": "2321:7:45", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "2320:25:45"}, "returnParameters": {"id": 6283, "nodeType": "ParameterList", "parameters": [], "src": "2362:0:45"}, "scope": 6318, "src": "2300:63:45", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Deposit an `amount` of Zrx Tokens from `staker` into the vault.\n Note that only the Staking contract can call this.\n Note that this can only be called when *not* in Catastrophic Failure mode.\n @param staker of Zrx Tokens.\n @param amount of Zrx Tokens to deposit.", "id": 6291, "implemented": false, "kind": "function", "modifiers": [], "name": "depositFrom", "nodeType": "FunctionDefinition", "parameters": {"id": 6289, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6286, "name": "staker", "nodeType": "VariableDeclaration", "scope": 6291, "src": "2694:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6285, "name": "address", "nodeType": "ElementaryTypeName", "src": "2694:7:45", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6288, "name": "amount", "nodeType": "VariableDeclaration", "scope": 6291, "src": "2710:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6287, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2710:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2693:32:45"}, "returnParameters": {"id": 6290, "nodeType": "ParameterList", "parameters": [], "src": "2742:0:45"}, "scope": 6318, "src": "2673:70:45", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Withdraw an `amount` of Zrx Tokens to `staker` from the vault.\n Note that only the Staking contract can call this.\n Note that this can only be called when *not* in Catastrophic Failure mode.\n @param staker of Zrx Tokens.\n @param amount of Zrx Tokens to withdraw.", "id": 6298, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawFrom", "nodeType": "FunctionDefinition", "parameters": {"id": 6296, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6293, "name": "staker", "nodeType": "VariableDeclaration", "scope": 6298, "src": "3075:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6292, "name": "address", "nodeType": "ElementaryTypeName", "src": "3075:7:45", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6295, "name": "amount", "nodeType": "VariableDeclaration", "scope": 6298, "src": "3091:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6294, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3091:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3074:32:45"}, "returnParameters": {"id": 6297, "nodeType": "ParameterList", "parameters": [], "src": "3123:0:45"}, "scope": 6318, "src": "3053:71:45", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Withdraw ALL Zrx Tokens to `staker` from the vault.\n Note that this can only be called when *in* Catastrophic Failure mode.\n @param staker of Zrx Tokens.", "id": 6305, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawAllFrom", "nodeType": "FunctionDefinition", "parameters": {"id": 6301, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6300, "name": "staker", "nodeType": "VariableDeclaration", "scope": 6305, "src": "3336:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6299, "name": "address", "nodeType": "ElementaryTypeName", "src": "3336:7:45", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "3335:16:45"}, "returnParameters": {"id": 6304, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6303, "name": "", "nodeType": "VariableDeclaration", "scope": 6305, "src": "3386:7:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6302, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3386:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3385:9:45"}, "scope": 6318, "src": "3311:84:45", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns the balance in Zrx Tokens of the `staker`\n @return Balance in Zrx.", "id": 6312, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": {"id": 6308, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6307, "name": "staker", "nodeType": "VariableDeclaration", "scope": 6312, "src": "3515:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6306, "name": "address", "nodeType": "ElementaryTypeName", "src": "3515:7:45", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "3514:16:45"}, "returnParameters": {"id": 6311, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6310, "name": "", "nodeType": "VariableDeclaration", "scope": 6312, "src": "3578:7:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6309, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3578:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3577:9:45"}, "scope": 6318, "src": "3496:91:45", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns the entire balance of Zrx tokens in the vault.", "id": 6317, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOfZrxVault", "nodeType": "FunctionDefinition", "parameters": {"id": 6313, "nodeType": "ParameterList", "parameters": [], "src": "3687:2:45"}, "returnParameters": {"id": 6316, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6315, "name": "", "nodeType": "VariableDeclaration", "scope": 6317, "src": "3737:7:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6314, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3737:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3736:9:45"}, "scope": 6318, "src": "3661:85:45", "stateMutability": "view", "superFunction": null, "visibility": "external"}], "scope": 6319, "src": "606:3142:45"}], "src": "580:3169:45"}, "id": 45}, "contracts/exchange/contracts-utils/contracts/src/LibBytes.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibBytes.sol", "exportedSymbols": {"LibBytes": [6819]}, "id": 6820, "nodeType": "SourceUnit", "nodes": [{"id": 6320, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:46"}, {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibBytesRichErrors.sol", "file": "./LibBytesRichErrors.sol", "id": 6321, "nodeType": "ImportDirective", "scope": 6820, "sourceUnit": 6855, "src": "605:34:46", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "./LibRichErrors.sol", "id": 6322, "nodeType": "ImportDirective", "scope": 6820, "sourceUnit": 6978, "src": "640:29:46", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 6819, "linearizedBaseContracts": [6819], "name": "LibBytes", "nodeType": "ContractDefinition", "nodes": [{"id": 6325, "libraryName": {"contractScope": null, "id": 6323, "name": "LibBytes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6819, "src": "702:8:46", "typeDescriptions": {"typeIdentifier": "t_contract$_LibBytes_$6819", "typeString": "library LibBytes"}}, "nodeType": "UsingForDirective", "src": "696:25:46", "typeName": {"id": 6324, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "715:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, {"body": {"id": 6335, "nodeType": "Block", "src": "1102:101:46", "statements": [{"externalReferences": [{"memoryAddress": {"declaration": 6330, "isOffset": false, "isSlot": false, "src": "1135:13:46", "valueSize": 1}}, {"input": {"declaration": 6327, "isOffset": false, "isSlot": false, "src": "1152:5:46", "valueSize": 1}}], "id": 6332, "nodeType": "InlineAssembly", "operations": "{ memoryAddress := input }", "src": "1112:55:46"}, {"expression": {"argumentTypes": null, "id": 6333, "name": "memoryAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6330, "src": "1183:13:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 6331, "id": 6334, "nodeType": "Return", "src": "1176:20:46"}]}, "documentation": "@dev Gets the memory address for a byte array.\n @param input Byte array to lookup.\n @return memoryAddress Memory address of byte array. This\n points to the header of the byte array which contains\n the length.", "id": 6336, "implemented": true, "kind": "function", "modifiers": [], "name": "rawAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 6328, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6327, "name": "input", "nodeType": "VariableDeclaration", "scope": 6336, "src": "1008:18:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6326, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1008:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1007:20:46"}, "returnParameters": {"id": 6331, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6330, "name": "memoryAddress", "nodeType": "VariableDeclaration", "scope": 6336, "src": "1075:21:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6329, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1075:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1074:23:46"}, "scope": 6819, "src": "988:215:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6346, "nodeType": "Block", "src": "1521:110:46", "statements": [{"externalReferences": [{"memoryAddress": {"declaration": 6341, "isOffset": false, "isSlot": false, "src": "1554:13:46", "valueSize": 1}}, {"input": {"declaration": 6338, "isOffset": false, "isSlot": false, "src": "1575:5:46", "valueSize": 1}}], "id": 6343, "nodeType": "InlineAssembly", "operations": "{\n memoryAddress := add(input, 32)\n}", "src": "1531:64:46"}, {"expression": {"argumentTypes": null, "id": 6344, "name": "memoryAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6341, "src": "1611:13:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 6342, "id": 6345, "nodeType": "Return", "src": "1604:20:46"}]}, "documentation": "@dev Gets the memory address for the contents of a byte array.\n @param input Byte array to lookup.\n @return memoryAddress Memory address of the contents of the byte array.", "id": 6347, "implemented": true, "kind": "function", "modifiers": [], "name": "contentAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 6339, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6338, "name": "input", "nodeType": "VariableDeclaration", "scope": 6347, "src": "1427:18:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6337, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1427:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1426:20:46"}, "returnParameters": {"id": 6342, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6341, "name": "memoryAddress", "nodeType": "VariableDeclaration", "scope": 6347, "src": "1494:21:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6340, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1494:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1493:23:46"}, "scope": 6819, "src": "1403:228:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6377, "nodeType": "Block", "src": "1997:4170:46", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6358, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6356, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6353, "src": "2011:6:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 6357, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2020:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "2011:11:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 6375, "nodeType": "Block", "src": "2483:3678:46", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6361, "name": "source", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6351, "src": "2561:6:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "id": 6362, "name": "dest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6349, "src": "2571:4:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2561:14:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6366, "nodeType": "IfStatement", "src": "2557:59:46", "trueBody": {"id": 6365, "nodeType": "Block", "src": "2577:39:46", "statements": [{"expression": null, "functionReturnParameters": 6355, "id": 6364, "nodeType": "Return", "src": "2595:7:46"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6367, "name": "source", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6351, "src": "3296:6:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 6368, "name": "dest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6349, "src": "3305:4:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3296:13:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 6373, "nodeType": "Block", "src": "4627:1524:46", "statements": [{"externalReferences": [{"length": {"declaration": 6353, "isOffset": false, "isSlot": false, "src": "4844:6:46", "valueSize": 1}}, {"length": {"declaration": 6353, "isOffset": false, "isSlot": false, "src": "4830:6:46", "valueSize": 1}}, {"source": {"declaration": 6351, "isOffset": false, "isSlot": false, "src": "4892:6:46", "valueSize": 1}}, {"length": {"declaration": 6353, "isOffset": false, "isSlot": false, "src": "4900:6:46", "valueSize": 1}}, {"source": {"declaration": 6351, "isOffset": false, "isSlot": false, "src": "5260:6:46", "valueSize": 1}}, {"dest": {"declaration": 6349, "isOffset": false, "isSlot": false, "src": "4944:4:46", "valueSize": 1}}, {"length": {"declaration": 6353, "isOffset": false, "isSlot": false, "src": "4950:6:46", "valueSize": 1}}, {"dest": {"declaration": 6349, "isOffset": false, "isSlot": false, "src": "6107:4:46", "valueSize": 1}}, {"dest": {"declaration": 6349, "isOffset": false, "isSlot": false, "src": "5850:4:46", "valueSize": 1}}], "id": 6372, "nodeType": "InlineAssembly", "operations": "{\n length := sub(length, 32)\n let sEnd := add(source, length)\n let dEnd := add(dest, length)\n let first := mload(source)\n for { } slt(dest, dEnd) { }\n {\n mstore(dEnd, mload(sEnd))\n sEnd := sub(sEnd, 32)\n dEnd := sub(dEnd, 32)\n }\n mstore(dest, first)\n}", "src": "4645:1492:46"}]}, "id": 6374, "nodeType": "IfStatement", "src": "3292:2859:46", "trueBody": {"id": 6371, "nodeType": "Block", "src": "3311:1310:46", "statements": [{"externalReferences": [{"length": {"declaration": 6353, "isOffset": false, "isSlot": false, "src": "3609:6:46", "valueSize": 1}}, {"length": {"declaration": 6353, "isOffset": false, "isSlot": false, "src": "3623:6:46", "valueSize": 1}}, {"source": {"declaration": 6351, "isOffset": false, "isSlot": false, "src": "3671:6:46", "valueSize": 1}}, {"length": {"declaration": 6353, "isOffset": false, "isSlot": false, "src": "3679:6:46", "valueSize": 1}}, {"dest": {"declaration": 6349, "isOffset": false, "isSlot": false, "src": "3723:4:46", "valueSize": 1}}, {"length": {"declaration": 6353, "isOffset": false, "isSlot": false, "src": "3729:6:46", "valueSize": 1}}, {"source": {"declaration": 6351, "isOffset": false, "isSlot": false, "src": "4314:6:46", "valueSize": 1}}, {"source": {"declaration": 6351, "isOffset": false, "isSlot": false, "src": "4376:6:46", "valueSize": 1}}, {"source": {"declaration": 6351, "isOffset": false, "isSlot": false, "src": "4409:6:46", "valueSize": 1}}, {"dest": {"declaration": 6349, "isOffset": false, "isSlot": false, "src": "4459:4:46", "valueSize": 1}}, {"dest": {"declaration": 6349, "isOffset": false, "isSlot": false, "src": "4364:4:46", "valueSize": 1}}, {"source": {"declaration": 6351, "isOffset": false, "isSlot": false, "src": "4423:6:46", "valueSize": 1}}, {"dest": {"declaration": 6349, "isOffset": false, "isSlot": false, "src": "4471:4:46", "valueSize": 1}}], "id": 6370, "nodeType": "InlineAssembly", "operations": "{\n length := sub(length, 32)\n let sEnd := add(source, length)\n let dEnd := add(dest, length)\n let last := mload(sEnd)\n for { } lt(source, sEnd) { }\n {\n mstore(dest, mload(source))\n source := add(source, 32)\n dest := add(dest, 32)\n }\n mstore(dEnd, last)\n}", "src": "3329:1278:46"}]}}]}, "id": 6376, "nodeType": "IfStatement", "src": "2007:4154:46", "trueBody": {"id": 6360, "nodeType": "Block", "src": "2024:453:46", "statements": [{"externalReferences": [{"length": {"declaration": 6353, "isOffset": false, "isSlot": false, "src": "2299:6:46", "valueSize": 1}}, {"source": {"declaration": 6351, "isOffset": false, "isSlot": false, "src": "2347:6:46", "valueSize": 1}}, {"dest": {"declaration": 6349, "isOffset": false, "isSlot": false, "src": "2402:4:46", "valueSize": 1}}, {"dest": {"declaration": 6349, "isOffset": false, "isSlot": false, "src": "2438:4:46", "valueSize": 1}}], "id": 6359, "nodeType": "InlineAssembly", "operations": "{\n let mask := sub(exp(256, sub(32, length)), 1)\n let s := and(mload(source), not(mask))\n let d := and(mload(dest), mask)\n mstore(dest, or(s, d))\n}", "src": "2239:228:46"}]}}]}, "documentation": "@dev Copies `length` bytes from memory location `source` to `dest`.\n @param dest memory address to copy bytes to.\n @param source memory address to copy bytes from.\n @param length number of bytes to copy.", "id": 6378, "implemented": true, "kind": "function", "modifiers": [], "name": "memCopy", "nodeType": "FunctionDefinition", "parameters": {"id": 6354, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6349, "name": "dest", "nodeType": "VariableDeclaration", "scope": 6378, "src": "1896:12:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6348, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1896:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6351, "name": "source", "nodeType": "VariableDeclaration", "scope": 6378, "src": "1918:14:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1918:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6353, "name": "length", "nodeType": "VariableDeclaration", "scope": 6378, "src": "1942:14:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1942:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1886:76:46"}, "returnParameters": {"id": 6355, "nodeType": "ParameterList", "parameters": [], "src": "1997:0:46"}, "scope": 6819, "src": "1870:4297:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6451, "nodeType": "Block", "src": "6634:942:46", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6389, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6382, "src": "6782:4:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 6390, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6384, "src": "6789:2:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6782:9:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6406, "nodeType": "IfStatement", "src": "6778:261:46", "trueBody": {"id": 6405, "nodeType": "Block", "src": "6793:246:46", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6397, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "6891:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 6830, "src": "6891:49:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$6830_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 6399, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "FromLessThanOrEqualsToRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6891:80:46", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "id": 6400, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6382, "src": "6989:4:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 6401, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6384, "src": "7011:2:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 6395, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "6829:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 6853, "src": "6829:44:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$6830_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 6402, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6829:198:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 6392, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "6807:13:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 6394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "6807:21:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 6403, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6807:221:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6404, "nodeType": "ExpressionStatement", "src": "6807:221:46"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6410, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6407, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6384, "src": "7052:2:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6408, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6380, "src": "7057:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7057:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7052:13:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6426, "nodeType": "IfStatement", "src": "7048:271:46", "trueBody": {"id": 6425, "nodeType": "Block", "src": "7067:252:46", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6416, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "7165:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 6830, "src": "7165:49:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$6830_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 6418, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ToLessThanOrEqualsLengthRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7165:82:46", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "id": 6419, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6384, "src": "7265:2:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6420, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6380, "src": "7285:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7285:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 6414, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "7103:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 6853, "src": "7103:44:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$6830_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 6422, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7103:204:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 6411, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "7081:13:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 6413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "7081:21:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 6423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7081:227:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6424, "nodeType": "ExpressionStatement", "src": "7081:227:46"}]}}, {"expression": {"argumentTypes": null, "id": 6434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 6427, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6387, "src": "7387:6:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6430, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6384, "src": "7406:2:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"argumentTypes": null, "id": 6431, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6382, "src": "7411:4:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7406:9:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6429, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "7396:9:46", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 6428, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7400:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 6433, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7396:20:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "src": "7387:29:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6435, "nodeType": "ExpressionStatement", "src": "7387:29:46"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 6437, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6387, "src": "7447:6:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "contentAddress", "nodeType": "MemberAccess", "referencedDeclaration": 6347, "src": "7447:21:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) pure returns (uint256)"}}, "id": 6439, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7447:23:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 6440, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6380, "src": "7484:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6441, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "contentAddress", "nodeType": "MemberAccess", "referencedDeclaration": 6347, "src": "7484:16:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) pure returns (uint256)"}}, "id": 6442, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7484:18:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "id": 6443, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6382, "src": "7505:4:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7484:25:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6445, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6387, "src": "7523:6:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7523:13:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6436, "name": "memCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6378, "src": "7426:7:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256,uint256) pure"}}, "id": 6447, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7426:120:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6448, "nodeType": "ExpressionStatement", "src": "7426:120:46"}, {"expression": {"argumentTypes": null, "id": 6449, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6387, "src": "7563:6:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 6388, "id": 6450, "nodeType": "Return", "src": "7556:13:46"}]}, "documentation": "@dev Returns a slices from a byte array.\n @param b The byte array to take a slice from.\n @param from The starting index for the slice (inclusive).\n @param to The final index for the slice (exclusive).\n @return result The slice containing bytes at indices [from, to)", "id": 6452, "implemented": true, "kind": "function", "modifiers": [], "name": "slice", "nodeType": "FunctionDefinition", "parameters": {"id": 6385, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6380, "name": "b", "nodeType": "VariableDeclaration", "scope": 6452, "src": "6499:14:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6379, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6499:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6382, "name": "from", "nodeType": "VariableDeclaration", "scope": 6452, "src": "6523:12:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6381, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6523:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6384, "name": "to", "nodeType": "VariableDeclaration", "scope": 6452, "src": "6545:10:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6383, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6545:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "6489:72:46"}, "returnParameters": {"id": 6388, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6387, "name": "result", "nodeType": "VariableDeclaration", "scope": 6452, "src": "6609:19:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6386, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6609:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "6608:21:46"}, "scope": 6819, "src": "6475:1101:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6504, "nodeType": "Block", "src": "8232:889:46", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6463, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6456, "src": "8380:4:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 6464, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6458, "src": "8387:2:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8380:9:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6480, "nodeType": "IfStatement", "src": "8376:261:46", "trueBody": {"id": 6479, "nodeType": "Block", "src": "8391:246:46", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6471, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "8489:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 6830, "src": "8489:49:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$6830_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 6473, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "FromLessThanOrEqualsToRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8489:80:46", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "id": 6474, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6456, "src": "8587:4:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 6475, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6458, "src": "8609:2:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 6469, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "8427:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 6853, "src": "8427:44:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$6830_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 6476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8427:198:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 6466, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "8405:13:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 6468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "8405:21:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 6477, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8405:221:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6478, "nodeType": "ExpressionStatement", "src": "8405:221:46"}]}}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6481, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6458, "src": "8650:2:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6482, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6454, "src": "8655:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8655:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8650:13:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6500, "nodeType": "IfStatement", "src": "8646:271:46", "trueBody": {"id": 6499, "nodeType": "Block", "src": "8665:252:46", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6490, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "8763:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 6830, "src": "8763:49:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$6830_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 6492, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ToLessThanOrEqualsLengthRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8763:82:46", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "id": 6493, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6458, "src": "8863:2:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6494, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6454, "src": "8883:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6495, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8883:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 6488, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "8701:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 6853, "src": "8701:44:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$6830_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 6496, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8701:204:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 6485, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "8679:13:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 6487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "8679:21:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 6497, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8679:227:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6498, "nodeType": "ExpressionStatement", "src": "8679:227:46"}]}}, {"externalReferences": [{"result": {"declaration": 6461, "isOffset": false, "isSlot": false, "src": "9060:6:46", "valueSize": 1}}, {"to": {"declaration": 6458, "isOffset": false, "isSlot": false, "src": "9072:2:46", "valueSize": 1}}, {"from": {"declaration": 6456, "isOffset": false, "isSlot": false, "src": "9076:4:46", "valueSize": 1}}, {"result": {"declaration": 6461, "isOffset": false, "isSlot": false, "src": "9018:6:46", "valueSize": 1}}, {"b": {"declaration": 6454, "isOffset": false, "isSlot": false, "src": "9032:1:46", "valueSize": 1}}, {"from": {"declaration": 6456, "isOffset": false, "isSlot": false, "src": "9035:4:46", "valueSize": 1}}], "id": 6501, "nodeType": "InlineAssembly", "operations": "{\n result := add(b, from)\n mstore(result, sub(to, from))\n}", "src": "8995:97:46"}, {"expression": {"argumentTypes": null, "id": 6502, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6461, "src": "9108:6:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 6462, "id": 6503, "nodeType": "Return", "src": "9101:13:46"}]}, "documentation": "@dev Returns a slice from a byte array without preserving the input.\n @param b The byte array to take a slice from. Will be destroyed in the process.\n @param from The starting index for the slice (inclusive).\n @param to The final index for the slice (exclusive).\n @return result The slice containing bytes at indices [from, to)\n @dev When `from == 0`, the original array will match the slice. In other cases its state will be corrupted.", "id": 6505, "implemented": true, "kind": "function", "modifiers": [], "name": "sliceDestructive", "nodeType": "FunctionDefinition", "parameters": {"id": 6459, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6454, "name": "b", "nodeType": "VariableDeclaration", "scope": 6505, "src": "8097:14:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6453, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8097:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6456, "name": "from", "nodeType": "VariableDeclaration", "scope": 6505, "src": "8121:12:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6455, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8121:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6458, "name": "to", "nodeType": "VariableDeclaration", "scope": 6505, "src": "8143:10:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6457, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8143:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "8087:72:46"}, "returnParameters": {"id": 6462, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6461, "name": "result", "nodeType": "VariableDeclaration", "scope": 6505, "src": "8207:19:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6460, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8207:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8206:21:46"}, "scope": 6819, "src": "8062:1059:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6544, "nodeType": "Block", "src": "9404:519:46", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6512, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6507, "src": "9418:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9418:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 6514, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9430:1:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "9418:13:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6531, "nodeType": "IfStatement", "src": "9414:267:46", "trueBody": {"id": 6530, "nodeType": "Block", "src": "9433:248:46", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6521, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "9531:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 6830, "src": "9531:49:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$6830_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 6523, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanZeroRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9531:79:46", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6524, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6507, "src": "9628:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6525, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9628:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "hexValue": "30", "id": 6526, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9654:1:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"argumentTypes": null, "id": 6519, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "9469:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 6853, "src": "9469:44:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$6830_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 6527, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9469:200:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 6516, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "9447:13:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 6518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "9447:21:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 6528, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9447:223:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6529, "nodeType": "ExpressionStatement", "src": "9447:223:46"}]}}, {"expression": {"argumentTypes": null, "id": 6539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 6532, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6510, "src": "9719:6:46", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "baseExpression": {"argumentTypes": null, "id": 6533, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6507, "src": "9728:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6538, "indexExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6534, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6507, "src": "9730:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9730:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"argumentTypes": null, "hexValue": "31", "id": 6536, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9741:1:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9730:12:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9728:15:46", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "9719:24:46", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 6540, "nodeType": "ExpressionStatement", "src": "9719:24:46"}, {"externalReferences": [{"b": {"declaration": 6507, "isOffset": false, "isSlot": false, "src": "9848:1:46", "valueSize": 1}}, {"b": {"declaration": 6507, "isOffset": false, "isSlot": false, "src": "9874:1:46", "valueSize": 1}}], "id": 6541, "nodeType": "InlineAssembly", "operations": "{\n let newLen := sub(mload(b), 1)\n mstore(b, newLen)\n}", "src": "9754:140:46"}, {"expression": {"argumentTypes": null, "id": 6542, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6510, "src": "9910:6:46", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "functionReturnParameters": 6511, "id": 6543, "nodeType": "Return", "src": "9903:13:46"}]}, "documentation": "@dev Pops the last byte off of a byte array by modifying its length.\n @param b Byte array that will be modified.\n @return The byte that was popped off.", "id": 6545, "implemented": true, "kind": "function", "modifiers": [], "name": "popLastByte", "nodeType": "FunctionDefinition", "parameters": {"id": 6508, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6507, "name": "b", "nodeType": "VariableDeclaration", "scope": 6545, "src": "9322:14:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6506, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9322:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9321:16:46"}, "returnParameters": {"id": 6511, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6510, "name": "result", "nodeType": "VariableDeclaration", "scope": 6545, "src": "9385:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}, "typeName": {"id": 6509, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "9385:6:46", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "value": null, "visibility": "internal"}], "src": "9384:15:46"}, "scope": 6819, "src": "9301:622:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6568, "nodeType": "Block", "src": "10273:266:46", "statements": [{"expression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6554, "name": "lhs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6547, "src": "10472:3:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10472:10:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6556, "name": "rhs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6549, "src": "10486:3:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10486:10:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10472:24:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 6565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 6560, "name": "lhs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6547, "src": "10510:3:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 6559, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12085, "src": "10500:9:46", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 6561, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10500:14:46", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 6563, "name": "rhs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6549, "src": "10528:3:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 6562, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12085, "src": "10518:9:46", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 6564, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10518:14:46", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "10500:32:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10472:60:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 6553, "id": 6567, "nodeType": "Return", "src": "10465:67:46"}]}, "documentation": "@dev Tests equality of two byte arrays.\n @param lhs First byte array to compare.\n @param rhs Second byte array to compare.\n @return True if arrays are the same. False otherwise.", "id": 6569, "implemented": true, "kind": "function", "modifiers": [], "name": "equals", "nodeType": "FunctionDefinition", "parameters": {"id": 6550, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6547, "name": "lhs", "nodeType": "VariableDeclaration", "scope": 6569, "src": "10161:16:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6546, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10161:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6549, "name": "rhs", "nodeType": "VariableDeclaration", "scope": 6569, "src": "10187:16:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6548, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10187:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "10151:58:46"}, "returnParameters": {"id": 6553, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6552, "name": "equal", "nodeType": "VariableDeclaration", "scope": 6569, "src": "10257:10:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 6551, "name": "bool", "nodeType": "ElementaryTypeName", "src": "10257:4:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "10256:12:46"}, "scope": 6819, "src": "10136:403:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6609, "nodeType": "Block", "src": "10894:930:46", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6578, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6571, "src": "10908:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10908:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6580, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6573, "src": "10919:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3230", "id": 6581, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10927:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "10919:10:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10908:21:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6601, "nodeType": "IfStatement", "src": "10904:321:46", "trueBody": {"id": 6600, "nodeType": "Block", "src": "10931:294:46", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6589, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "11029:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 6830, "src": "11029:49:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$6830_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 6591, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanOrEqualsTwentyRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11029:89:46", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6592, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6571, "src": "11136:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11136:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6596, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6594, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6573, "src": "11162:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3230", "id": 6595, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11170:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "11162:10:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 6587, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "10967:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 6853, "src": "10967:44:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$6830_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 6597, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10967:246:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 6584, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "10945:13:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 6586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "10945:21:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 6598, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10945:269:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6599, "nodeType": "ExpressionStatement", "src": "10945:269:46"}]}}, {"expression": {"argumentTypes": null, "id": 6604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 6602, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6573, "src": "11462:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"argumentTypes": null, "hexValue": "3230", "id": 6603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11471:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "11462:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6605, "nodeType": "ExpressionStatement", "src": "11462:11:46"}, {"externalReferences": [{"result": {"declaration": 6576, "isOffset": false, "isSlot": false, "src": "11706:6:46", "valueSize": 1}}, {"b": {"declaration": 6571, "isOffset": false, "isSlot": false, "src": "11730:1:46", "valueSize": 1}}, {"index": {"declaration": 6573, "isOffset": false, "isSlot": false, "src": "11733:5:46", "valueSize": 1}}], "id": 6606, "nodeType": "InlineAssembly", "operations": "{\n result := and(mload(add(b, index)), 0xffffffffffffffffffffffffffffffffffffffff)\n}", "src": "11526:269:46"}, {"expression": {"argumentTypes": null, "id": 6607, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6576, "src": "11811:6:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 6577, "id": 6608, "nodeType": "Return", "src": "11804:13:46"}]}, "documentation": "@dev Reads an address from a position in a byte array.\n @param b Byte array containing an address.\n @param index Index in byte array of address.\n @return address from byte array.", "id": 6610, "implemented": true, "kind": "function", "modifiers": [], "name": "readAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 6574, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6571, "name": "b", "nodeType": "VariableDeclaration", "scope": 6610, "src": "10783:14:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6570, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10783:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6573, "name": "index", "nodeType": "VariableDeclaration", "scope": 6610, "src": "10807:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6572, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10807:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "10773:53:46"}, "returnParameters": {"id": 6577, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6576, "name": "result", "nodeType": "VariableDeclaration", "scope": 6610, "src": "10874:14:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6575, "name": "address", "nodeType": "ElementaryTypeName", "src": "10874:7:46", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "10873:16:46"}, "scope": 6819, "src": "10753:1071:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6648, "nodeType": "Block", "src": "12193:1704:46", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6619, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6612, "src": "12207:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12207:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6621, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6614, "src": "12218:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3230", "id": 6622, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12226:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "12218:10:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12207:21:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6642, "nodeType": "IfStatement", "src": "12203:321:46", "trueBody": {"id": 6641, "nodeType": "Block", "src": "12230:294:46", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6630, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "12328:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 6830, "src": "12328:49:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$6830_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 6632, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanOrEqualsTwentyRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12328:89:46", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6633, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6612, "src": "12435:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12435:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6635, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6614, "src": "12461:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3230", "id": 6636, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12469:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "12461:10:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 6628, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "12266:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 6853, "src": "12266:44:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$6830_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 6638, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12266:246:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 6625, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "12244:13:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 6627, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "12244:21:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 6639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12244:269:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6640, "nodeType": "ExpressionStatement", "src": "12244:269:46"}]}}, {"expression": {"argumentTypes": null, "id": 6645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 6643, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6614, "src": "12761:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"argumentTypes": null, "hexValue": "3230", "id": 6644, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12770:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "src": "12761:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6646, "nodeType": "ExpressionStatement", "src": "12761:11:46"}, {"externalReferences": [{"input": {"declaration": 6616, "isOffset": false, "isSlot": false, "src": "13701:5:46", "valueSize": 1}}, {"b": {"declaration": 6612, "isOffset": false, "isSlot": false, "src": "13480:1:46", "valueSize": 1}}, {"index": {"declaration": 6614, "isOffset": false, "isSlot": false, "src": "13483:5:46", "valueSize": 1}}, {"input": {"declaration": 6616, "isOffset": false, "isSlot": false, "src": "13714:5:46", "valueSize": 1}}, {"b": {"declaration": 6612, "isOffset": false, "isSlot": false, "src": "13848:1:46", "valueSize": 1}}, {"index": {"declaration": 6614, "isOffset": false, "isSlot": false, "src": "13851:5:46", "valueSize": 1}}, {"input": {"declaration": 6616, "isOffset": false, "isSlot": false, "src": "13863:5:46", "valueSize": 1}}], "id": 6647, "nodeType": "InlineAssembly", "operations": "{\n let neighbors := and(mload(add(b, index)), 0xffffffffffffffffffffffff0000000000000000000000000000000000000000)\n input := and(input, 0xffffffffffffffffffffffffffffffffffffffff)\n mstore(add(b, index), xor(input, neighbors))\n}", "src": "12826:1065:46"}]}, "documentation": "@dev Writes an address into a specific position in a byte array.\n @param b Byte array to insert address into.\n @param index Index in byte array of address.\n @param input Address to put into byte array.", "id": 6649, "implemented": true, "kind": "function", "modifiers": [], "name": "writeAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 6617, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6612, "name": "b", "nodeType": "VariableDeclaration", "scope": 6649, "src": "12092:14:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6611, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12092:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6614, "name": "index", "nodeType": "VariableDeclaration", "scope": 6649, "src": "12116:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6613, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12116:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6616, "name": "input", "nodeType": "VariableDeclaration", "scope": 6649, "src": "12139:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6615, "name": "address", "nodeType": "ElementaryTypeName", "src": "12139:7:46", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "12082:76:46"}, "returnParameters": {"id": 6618, "nodeType": "ParameterList", "parameters": [], "src": "12193:0:46"}, "scope": 6819, "src": "12061:1836:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6689, "nodeType": "Block", "src": "14274:538:46", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6658, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6651, "src": "14288:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14288:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6660, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6653, "src": "14299:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 6661, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14307:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "14299:10:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "14288:21:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6681, "nodeType": "IfStatement", "src": "14284:297:46", "trueBody": {"id": 6680, "nodeType": "Block", "src": "14311:270:46", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6669, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "14409:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6670, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 6830, "src": "14409:49:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$6830_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 6671, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanOrEqualsThirtyTwoRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14409:92:46", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6672, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6651, "src": "14519:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "14519:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6676, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6674, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6653, "src": "14545:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 6675, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14553:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "14545:10:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 6667, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "14347:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 6853, "src": "14347:44:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$6830_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 6677, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14347:222:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 6664, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "14325:13:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 6666, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "14325:21:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 6678, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14325:245:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6679, "nodeType": "ExpressionStatement", "src": "14325:245:46"}]}}, {"expression": {"argumentTypes": null, "id": 6684, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 6682, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6653, "src": "14652:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"argumentTypes": null, "hexValue": "3332", "id": 6683, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14661:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "14652:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6685, "nodeType": "ExpressionStatement", "src": "14652:11:46"}, {"externalReferences": [{"result": {"declaration": 6656, "isOffset": false, "isSlot": false, "src": "14743:6:46", "valueSize": 1}}, {"b": {"declaration": 6651, "isOffset": false, "isSlot": false, "src": "14763:1:46", "valueSize": 1}}, {"index": {"declaration": 6653, "isOffset": false, "isSlot": false, "src": "14766:5:46", "valueSize": 1}}], "id": 6686, "nodeType": "InlineAssembly", "operations": "{\n result := mload(add(b, index))\n}", "src": "14720:63:46"}, {"expression": {"argumentTypes": null, "id": 6687, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6656, "src": "14799:6:46", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 6657, "id": 6688, "nodeType": "Return", "src": "14792:13:46"}]}, "documentation": "@dev Reads a bytes32 value from a position in a byte array.\n @param b Byte array containing a bytes32 value.\n @param index Index in byte array of bytes32 value.\n @return bytes32 value from byte array.", "id": 6690, "implemented": true, "kind": "function", "modifiers": [], "name": "readBytes32", "nodeType": "FunctionDefinition", "parameters": {"id": 6654, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6651, "name": "b", "nodeType": "VariableDeclaration", "scope": 6690, "src": "14163:14:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6650, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "14163:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6653, "name": "index", "nodeType": "VariableDeclaration", "scope": 6690, "src": "14187:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6652, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14187:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "14153:53:46"}, "returnParameters": {"id": 6657, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6656, "name": "result", "nodeType": "VariableDeclaration", "scope": 6690, "src": "14254:14:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6655, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "14254:7:46", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "14253:16:46"}, "scope": 6819, "src": "14133:679:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6728, "nodeType": "Block", "src": "15180:513:46", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6704, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6699, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "15194:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6700, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15194:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6701, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6694, "src": "15205:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 6702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15213:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "15205:10:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "15194:21:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6722, "nodeType": "IfStatement", "src": "15190:297:46", "trueBody": {"id": 6721, "nodeType": "Block", "src": "15217:270:46", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6710, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "15315:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 6830, "src": "15315:49:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$6830_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 6712, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanOrEqualsThirtyTwoRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15315:92:46", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6713, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "15425:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "15425:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6717, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6715, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6694, "src": "15451:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "3332", "id": 6716, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15459:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "15451:10:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 6708, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "15253:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 6853, "src": "15253:44:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$6830_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 6718, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15253:222:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 6705, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "15231:13:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 6707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "15231:21:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 6719, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15231:245:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6720, "nodeType": "ExpressionStatement", "src": "15231:245:46"}]}}, {"expression": {"argumentTypes": null, "id": 6725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 6723, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6694, "src": "15558:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"argumentTypes": null, "hexValue": "3332", "id": 6724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15567:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "15558:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6726, "nodeType": "ExpressionStatement", "src": "15558:11:46"}, {"externalReferences": [{"input": {"declaration": 6696, "isOffset": false, "isSlot": false, "src": "15671:5:46", "valueSize": 1}}, {"b": {"declaration": 6692, "isOffset": false, "isSlot": false, "src": "15660:1:46", "valueSize": 1}}, {"index": {"declaration": 6694, "isOffset": false, "isSlot": false, "src": "15663:5:46", "valueSize": 1}}], "id": 6727, "nodeType": "InlineAssembly", "operations": "{ mstore(add(b, index), input) }", "src": "15626:61:46"}]}, "documentation": "@dev Writes a bytes32 into a specific position in a byte array.\n @param b Byte array to insert into.\n @param index Index in byte array of .\n @param input bytes32 to put into byte array.", "id": 6729, "implemented": true, "kind": "function", "modifiers": [], "name": "writeBytes32", "nodeType": "FunctionDefinition", "parameters": {"id": 6697, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6692, "name": "b", "nodeType": "VariableDeclaration", "scope": 6729, "src": "15079:14:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6691, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "15079:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6694, "name": "index", "nodeType": "VariableDeclaration", "scope": 6729, "src": "15103:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6693, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "15103:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6696, "name": "input", "nodeType": "VariableDeclaration", "scope": 6729, "src": "15126:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6695, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15126:7:46", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "15069:76:46"}, "returnParameters": {"id": 6698, "nodeType": "ParameterList", "parameters": [], "src": "15180:0:46"}, "scope": 6819, "src": "15048:645:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6749, "nodeType": "Block", "src": "16070:79:46", "statements": [{"expression": {"argumentTypes": null, "id": 6745, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 6738, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6736, "src": "16080:6:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 6741, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6731, "src": "16109:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 6742, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6733, "src": "16112:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6740, "name": "readBytes32", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6690, "src": "16097:11:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)"}}, "id": 6743, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16097:21:46", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 6739, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "16089:7:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": "uint256"}, "id": 6744, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16089:30:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16080:39:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6746, "nodeType": "ExpressionStatement", "src": "16080:39:46"}, {"expression": {"argumentTypes": null, "id": 6747, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6736, "src": "16136:6:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 6737, "id": 6748, "nodeType": "Return", "src": "16129:13:46"}]}, "documentation": "@dev Reads a uint256 value from a position in a byte array.\n @param b Byte array containing a uint256 value.\n @param index Index in byte array of uint256 value.\n @return uint256 value from byte array.", "id": 6750, "implemented": true, "kind": "function", "modifiers": [], "name": "readUint256", "nodeType": "FunctionDefinition", "parameters": {"id": 6734, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6731, "name": "b", "nodeType": "VariableDeclaration", "scope": 6750, "src": "15959:14:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6730, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "15959:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6733, "name": "index", "nodeType": "VariableDeclaration", "scope": 6750, "src": "15983:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6732, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "15983:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "15949:53:46"}, "returnParameters": {"id": 6737, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6736, "name": "result", "nodeType": "VariableDeclaration", "scope": 6750, "src": "16050:14:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6735, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16050:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "16049:16:46"}, "scope": 6819, "src": "15929:220:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6767, "nodeType": "Block", "src": "16517:55:46", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 6760, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6752, "src": "16540:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 6761, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6754, "src": "16543:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 6763, "name": "input", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6756, "src": "16558:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6762, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "16550:7:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}, "id": 6764, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16550:14:46", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 6759, "name": "writeBytes32", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6729, "src": "16527:12:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (bytes memory,uint256,bytes32) pure"}}, "id": 6765, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16527:38:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6766, "nodeType": "ExpressionStatement", "src": "16527:38:46"}]}, "documentation": "@dev Writes a uint256 into a specific position in a byte array.\n @param b Byte array to insert into.\n @param index Index in byte array of .\n @param input uint256 to put into byte array.", "id": 6768, "implemented": true, "kind": "function", "modifiers": [], "name": "writeUint256", "nodeType": "FunctionDefinition", "parameters": {"id": 6757, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6752, "name": "b", "nodeType": "VariableDeclaration", "scope": 6768, "src": "16416:14:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6751, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "16416:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6754, "name": "index", "nodeType": "VariableDeclaration", "scope": 6768, "src": "16440:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6753, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16440:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6756, "name": "input", "nodeType": "VariableDeclaration", "scope": 6768, "src": "16463:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6755, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16463:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "16406:76:46"}, "returnParameters": {"id": 6758, "nodeType": "ParameterList", "parameters": [], "src": "16517:0:46"}, "scope": 6819, "src": "16385:187:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6808, "nodeType": "Block", "src": "16953:732:46", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6777, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6770, "src": "16967:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6778, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "16967:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6781, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6779, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6772, "src": "16978:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "34", "id": 6780, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "16986:1:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "16978:9:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "16967:20:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6800, "nodeType": "IfStatement", "src": "16963:290:46", "trueBody": {"id": 6799, "nodeType": "Block", "src": "16989:264:46", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6788, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "17087:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 6830, "src": "17087:49:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_InvalidByteOperationErrorCodes_$6830_$", "typeString": "type(enum LibBytesRichErrors.InvalidByteOperationErrorCodes)"}}, "id": 6790, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "LengthGreaterThanOrEqualsFourRequired", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "17087:87:46", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 6791, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6770, "src": "17192:1:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 6792, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "17192:8:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6793, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6772, "src": "17218:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "hexValue": "34", "id": 6794, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17226:1:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "17218:9:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 6786, "name": "LibBytesRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6854, "src": "17025:18:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytesRichErrors_$6854_$", "typeString": "type(library LibBytesRichErrors)"}}, "id": 6787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "InvalidByteOperationError", "nodeType": "MemberAccess", "referencedDeclaration": 6853, "src": "17025:44:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_InvalidByteOperationErrorCodes_$6830_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibBytesRichErrors.InvalidByteOperationErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 6796, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17025:216:46", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 6783, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "17003:13:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 6785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "17003:21:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 6797, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17003:239:46", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6798, "nodeType": "ExpressionStatement", "src": "17003:239:46"}]}}, {"expression": {"argumentTypes": null, "id": 6803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 6801, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6772, "src": "17320:5:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"argumentTypes": null, "hexValue": "3332", "id": 6802, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17329:2:46", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "17320:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6804, "nodeType": "ExpressionStatement", "src": "17320:11:46"}, {"externalReferences": [{"result": {"declaration": 6775, "isOffset": false, "isSlot": false, "src": "17410:6:46", "valueSize": 1}}, {"b": {"declaration": 6770, "isOffset": false, "isSlot": false, "src": "17430:1:46", "valueSize": 1}}, {"index": {"declaration": 6772, "isOffset": false, "isSlot": false, "src": "17433:5:46", "valueSize": 1}}, {"result": {"declaration": 6775, "isOffset": false, "isSlot": false, "src": "17557:6:46", "valueSize": 1}}, {"result": {"declaration": 6775, "isOffset": false, "isSlot": false, "src": "17571:6:46", "valueSize": 1}}], "id": 6805, "nodeType": "InlineAssembly", "operations": "{\n result := mload(add(b, index))\n result := and(result, 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000)\n}", "src": "17387:269:46"}, {"expression": {"argumentTypes": null, "id": 6806, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6775, "src": "17672:6:46", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "functionReturnParameters": 6776, "id": 6807, "nodeType": "Return", "src": "17665:13:46"}]}, "documentation": "@dev Reads an unpadded bytes4 value from a position in a byte array.\n @param b Byte array containing a bytes4 value.\n @param index Index in byte array of bytes4 value.\n @return bytes4 value from byte array.", "id": 6809, "implemented": true, "kind": "function", "modifiers": [], "name": "readBytes4", "nodeType": "FunctionDefinition", "parameters": {"id": 6773, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6770, "name": "b", "nodeType": "VariableDeclaration", "scope": 6809, "src": "16843:14:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6769, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "16843:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6772, "name": "index", "nodeType": "VariableDeclaration", "scope": 6809, "src": "16867:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6771, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16867:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "16833:53:46"}, "returnParameters": {"id": 6776, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6775, "name": "result", "nodeType": "VariableDeclaration", "scope": 6809, "src": "16934:13:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 6774, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "16934:6:46", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "16933:15:46"}, "scope": 6819, "src": "16814:871:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6817, "nodeType": "Block", "src": "18147:66:46", "statements": [{"externalReferences": [{"b": {"declaration": 6811, "isOffset": false, "isSlot": false, "src": "18187:1:46", "valueSize": 1}}, {"length": {"declaration": 6813, "isOffset": false, "isSlot": false, "src": "18190:6:46", "valueSize": 1}}], "id": 6816, "nodeType": "InlineAssembly", "operations": "{ mstore(b, length) }", "src": "18157:50:46"}]}, "documentation": "@dev Writes a new length to a byte array.\n Decreasing length will lead to removing the corresponding lower order bytes from the byte array.\n Increasing length may lead to appending adjacent in-memory bytes to the end of the byte array.\n @param b Bytes array to write new length to.\n @param length New length of byte array.", "id": 6818, "implemented": true, "kind": "function", "modifiers": [], "name": "writeLength", "nodeType": "FunctionDefinition", "parameters": {"id": 6814, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6811, "name": "b", "nodeType": "VariableDeclaration", "scope": 6818, "src": "18081:14:46", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6810, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "18081:5:46", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6813, "name": "length", "nodeType": "VariableDeclaration", "scope": 6818, "src": "18097:14:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6812, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18097:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "18080:32:46"}, "returnParameters": {"id": 6815, "nodeType": "ParameterList", "parameters": [], "src": "18147:0:46"}, "scope": 6819, "src": "18060:153:46", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 6820, "src": "672:17543:46"}], "src": "580:17636:46"}, "id": 46}, "contracts/exchange/contracts-utils/contracts/src/LibBytesRichErrors.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibBytesRichErrors.sol", "exportedSymbols": {"LibBytesRichErrors": [6854]}, "id": 6855, "nodeType": "SourceUnit", "nodes": [{"id": 6821, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:47"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 6854, "linearizedBaseContracts": [6854], "name": "LibBytesRichErrors", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "LibBytesRichErrors.InvalidByteOperationErrorCodes", "id": 6830, "members": [{"id": 6822, "name": "FromLessThanOrEqualsToRequired", "nodeType": "EnumValue", "src": "686:30:47"}, {"id": 6823, "name": "ToLessThanOrEqualsLengthRequired", "nodeType": "EnumValue", "src": "726:32:47"}, {"id": 6824, "name": "LengthGreaterThanZeroRequired", "nodeType": "EnumValue", "src": "768:29:47"}, {"id": 6825, "name": "LengthGreaterThanOrEqualsFourRequired", "nodeType": "EnumValue", "src": "807:37:47"}, {"id": 6826, "name": "LengthGreaterThanOrEqualsTwentyRequired", "nodeType": "EnumValue", "src": "854:39:47"}, {"id": 6827, "name": "LengthGreaterThanOrEqualsThirtyTwoRequired", "nodeType": "EnumValue", "src": "903:42:47"}, {"id": 6828, "name": "LengthGreaterThanOrEqualsNestedBytesLengthRequired", "nodeType": "EnumValue", "src": "955:50:47"}, {"id": 6829, "name": "DestinationLengthGreaterThanOrEqualSourceLengthRequired", "nodeType": "EnumValue", "src": "1015:55:47"}], "name": "InvalidByteOperationErrorCodes", "nodeType": "EnumDefinition", "src": "640:436:47"}, {"constant": true, "id": 6833, "name": "INVALID_BYTE_OPERATION_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 6854, "src": "1159:83:47", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 6831, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1159:6:47", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783238303036353935", "id": 6832, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1232:10:47", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_671114645_by_1", "typeString": "int_const 671114645"}, "value": "0x28006595"}, "visibility": "internal"}, {"body": {"id": 6852, "nodeType": "Block", "src": "1498:172:47", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 6846, "name": "INVALID_BYTE_OPERATION_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6833, "src": "1551:37:47", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 6847, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6835, "src": "1602:9:47", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, {"argumentTypes": null, "id": 6848, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6837, "src": "1625:6:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 6849, "name": "required", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6839, "src": "1645:8:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 6844, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "1515:3:47", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 6845, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1515:22:47", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 6850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1515:148:47", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 6843, "id": 6851, "nodeType": "Return", "src": "1508:155:47"}]}, "documentation": null, "id": 6853, "implemented": true, "kind": "function", "modifiers": [], "name": "InvalidByteOperationError", "nodeType": "FunctionDefinition", "parameters": {"id": 6840, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6835, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 6853, "src": "1336:40:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}, "typeName": {"contractScope": null, "id": 6834, "name": "InvalidByteOperationErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 6830, "src": "1336:30:47", "typeDescriptions": {"typeIdentifier": "t_enum$_InvalidByteOperationErrorCodes_$6830", "typeString": "enum LibBytesRichErrors.InvalidByteOperationErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6837, "name": "offset", "nodeType": "VariableDeclaration", "scope": 6853, "src": "1386:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6836, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1386:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6839, "name": "required", "nodeType": "VariableDeclaration", "scope": 6853, "src": "1410:16:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6838, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1410:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1326:106:47"}, "returnParameters": {"id": 6843, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6842, "name": "", "nodeType": "VariableDeclaration", "scope": 6853, "src": "1480:12:47", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6841, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1480:5:47", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1479:14:47"}, "scope": 6854, "src": "1292:378:47", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 6855, "src": "606:1066:47"}], "src": "580:1093:47"}, "id": 47}, "contracts/exchange/contracts-utils/contracts/src/LibEIP1271.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibEIP1271.sol", "exportedSymbols": {"LibEIP1271": [6860]}, "id": 6861, "nodeType": "SourceUnit", "nodes": [{"id": 6856, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:48"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 6860, "linearizedBaseContracts": [6860], "name": "LibEIP1271", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 6859, "name": "EIP1271_MAGIC_VALUE", "nodeType": "VariableDeclaration", "scope": 6860, "src": "729:55:48", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 6857, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "729:6:48", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783230633133623062", "id": 6858, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "774:10:48", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_549534475_by_1", "typeString": "int_const 549534475"}, "value": "0x20c13b0b"}, "visibility": "public"}], "scope": 6861, "src": "606:181:48"}], "src": "580:208:48"}, "id": 48}, "contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibEIP712.sol", "exportedSymbols": {"LibEIP712": [6900]}, "id": 6901, "nodeType": "SourceUnit", "nodes": [{"id": 6862, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:49"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 6900, "linearizedBaseContracts": [6900], "name": "LibEIP712", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 6865, "name": "_EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH", "nodeType": "VariableDeclaration", "scope": 6900, "src": "897:131:49", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6863, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "897:7:49", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"argumentTypes": null, "hexValue": "307838623733633363363962623866653364353132656363346366373539636337393233396637623137396230666661636161396137356435323262333934303066", "id": 6864, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "962:66:49", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1", "typeString": "int_const 6307...(69 digits omitted)...1551"}, "value": "0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"}, "visibility": "internal"}, {"body": {"id": 6885, "nodeType": "Block", "src": "1503:1045:49", "statements": [{"assignments": [6879], "declarations": [{"constant": false, "id": 6879, "name": "schemaHash", "nodeType": "VariableDeclaration", "scope": 6885, "src": "1513:18:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6878, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1513:7:49", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "id": 6881, "initialValue": {"argumentTypes": null, "id": 6880, "name": "_EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6865, "src": "1534:36:49", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1513:57:49"}, {"externalReferences": [{"name": {"declaration": 6867, "isOffset": false, "isSlot": false, "src": "1986:4:49", "valueSize": 1}}, {"name": {"declaration": 6867, "isOffset": false, "isSlot": false, "src": "2003:4:49", "valueSize": 1}}, {"version": {"declaration": 6869, "isOffset": false, "isSlot": false, "src": "2055:7:49", "valueSize": 1}}, {"version": {"declaration": 6869, "isOffset": false, "isSlot": false, "src": "2075:7:49", "valueSize": 1}}, {"result": {"declaration": 6876, "isOffset": false, "isSlot": false, "src": "2477:6:49", "valueSize": 1}}, {"schemaHash": {"declaration": 6879, "isOffset": false, "isSlot": false, "src": "2228:10:49", "valueSize": 1}}, {"chainId": {"declaration": 6871, "isOffset": false, "isSlot": false, "src": "2371:7:49", "valueSize": 1}}, {"verifyingContract": {"declaration": 6873, "isOffset": false, "isSlot": false, "src": "2417:17:49", "valueSize": 1}}], "id": 6882, "nodeType": "InlineAssembly", "operations": "{\n let nameHash := keccak256(add(name, 32), mload(name))\n let versionHash := keccak256(add(version, 32), mload(version))\n let memPtr := mload(64)\n mstore(memPtr, schemaHash)\n mstore(add(memPtr, 32), nameHash)\n mstore(add(memPtr, 64), versionHash)\n mstore(add(memPtr, 96), chainId)\n mstore(add(memPtr, 128), verifyingContract)\n result := keccak256(memPtr, 160)\n}", "src": "1885:634:49"}, {"expression": {"argumentTypes": null, "id": 6883, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6876, "src": "2535:6:49", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 6877, "id": 6884, "nodeType": "Return", "src": "2528:13:49"}]}, "documentation": "@dev Calculates a EIP712 domain separator.\n @param name The EIP712 domain name.\n @param version The EIP712 domain version.\n @param verifyingContract The EIP712 verifying contract.\n @return EIP712 domain separator.", "id": 6886, "implemented": true, "kind": "function", "modifiers": [], "name": "hashEIP712Domain", "nodeType": "FunctionDefinition", "parameters": {"id": 6874, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6867, "name": "name", "nodeType": "VariableDeclaration", "scope": 6886, "src": "1320:18:49", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 6866, "name": "string", "nodeType": "ElementaryTypeName", "src": "1320:6:49", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6869, "name": "version", "nodeType": "VariableDeclaration", "scope": 6886, "src": "1348:21:49", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 6868, "name": "string", "nodeType": "ElementaryTypeName", "src": "1348:6:49", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6871, "name": "chainId", "nodeType": "VariableDeclaration", "scope": 6886, "src": "1379:15:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6870, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1379:7:49", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6873, "name": "verifyingContract", "nodeType": "VariableDeclaration", "scope": 6886, "src": "1404:25:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6872, "name": "address", "nodeType": "ElementaryTypeName", "src": "1404:7:49", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1310:125:49"}, "returnParameters": {"id": 6877, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6876, "name": "result", "nodeType": "VariableDeclaration", "scope": 6886, "src": "1483:14:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6875, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1483:7:49", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "1482:16:49"}, "scope": 6900, "src": "1285:1263:49", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6898, "nodeType": "Block", "src": "3029:750:49", "statements": [{"externalReferences": [{"result": {"declaration": 6893, "isOffset": false, "isSlot": false, "src": "3709:6:49", "valueSize": 1}}, {"eip712DomainHash": {"declaration": 6888, "isOffset": false, "isSlot": false, "src": "3471:16:49", "valueSize": 1}}, {"hashStruct": {"declaration": 6890, "isOffset": false, "isSlot": false, "src": "3590:10:49", "valueSize": 1}}], "id": 6895, "nodeType": "InlineAssembly", "operations": "{\n let memPtr := mload(64)\n mstore(memPtr, 0x1901000000000000000000000000000000000000000000000000000000000000)\n mstore(add(memPtr, 2), eip712DomainHash)\n mstore(add(memPtr, 34), hashStruct)\n result := keccak256(memPtr, 66)\n}", "src": "3235:515:49"}, {"expression": {"argumentTypes": null, "id": 6896, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6893, "src": "3766:6:49", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 6894, "id": 6897, "nodeType": "Return", "src": "3759:13:49"}]}, "documentation": "@dev Calculates EIP712 encoding for a hash struct with a given domain hash.\n @param eip712DomainHash Hash of the domain domain separator data, computed\n with getDomainHash().\n @param hashStruct The EIP712 hash struct.\n @return EIP712 hash applied to the given EIP712 Domain.", "id": 6899, "implemented": true, "kind": "function", "modifiers": [], "name": "hashEIP712Message", "nodeType": "FunctionDefinition", "parameters": {"id": 6891, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6888, "name": "eip712DomainHash", "nodeType": "VariableDeclaration", "scope": 6899, "src": "2916:24:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6887, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2916:7:49", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6890, "name": "hashStruct", "nodeType": "VariableDeclaration", "scope": 6899, "src": "2942:18:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6889, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2942:7:49", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "2915:46:49"}, "returnParameters": {"id": 6894, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6893, "name": "result", "nodeType": "VariableDeclaration", "scope": 6899, "src": "3009:14:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6892, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3009:7:49", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "3008:16:49"}, "scope": 6900, "src": "2889:890:49", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 6901, "src": "606:3175:49"}], "src": "580:3202:49"}, "id": 49}, "contracts/exchange/contracts-utils/contracts/src/LibOwnableRichErrors.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibOwnableRichErrors.sol", "exportedSymbols": {"LibOwnableRichErrors": [6934]}, "id": 6935, "nodeType": "SourceUnit", "nodes": [{"id": 6902, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "0:23:50"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 6934, "linearizedBaseContracts": [6934], "name": "LibOwnableRichErrors", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 6905, "name": "ONLY_OWNER_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 6934, "src": "122:71:50", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 6903, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "122:6:50", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783164653435616431", "id": 6904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "183:10:50", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_501504721_by_1", "typeString": "int_const 501504721"}, "value": "0x1de45ad1"}, "visibility": "internal"}, {"constant": true, "id": 6908, "name": "TRANSFER_OWNER_TO_ZERO_ERROR_BYTES", "nodeType": "VariableDeclaration", "scope": 6934, "src": "255:82:50", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes"}, "typeName": {"id": 6906, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "255:5:50", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": {"argumentTypes": null, "hexValue": "e69edc3e", "id": 6907, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "324:13:50", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_9637f66617eda711104d7a6f14a0968da37d2d61952228df7a8d4b6bb7e54b41", "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)"}, "value": null}, "visibility": "internal"}, {"body": {"id": 6924, "nodeType": "Block", "src": "529:134:50", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 6919, "name": "ONLY_OWNER_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6905, "src": "582:25:50", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 6920, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6910, "src": "621:6:50", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 6921, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6912, "src": "641:5:50", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 6917, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "546:3:50", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 6918, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "546:22:50", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 6922, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "546:110:50", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 6916, "id": 6923, "nodeType": "Return", "src": "539:117:50"}]}, "documentation": null, "id": 6925, "implemented": true, "kind": "function", "modifiers": [], "name": "OnlyOwnerError", "nodeType": "FunctionDefinition", "parameters": {"id": 6913, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6910, "name": "sender", "nodeType": "VariableDeclaration", "scope": 6925, "src": "420:14:50", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6909, "name": "address", "nodeType": "ElementaryTypeName", "src": "420:7:50", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6912, "name": "owner", "nodeType": "VariableDeclaration", "scope": 6925, "src": "444:13:50", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6911, "name": "address", "nodeType": "ElementaryTypeName", "src": "444:7:50", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "410:53:50"}, "returnParameters": {"id": 6916, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6915, "name": "", "nodeType": "VariableDeclaration", "scope": 6925, "src": "511:12:50", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6914, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "511:5:50", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "510:14:50"}, "scope": 6934, "src": "387:276:50", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6932, "nodeType": "Block", "src": "770:58:50", "statements": [{"expression": {"argumentTypes": null, "id": 6930, "name": "TRANSFER_OWNER_TO_ZERO_ERROR_BYTES", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6908, "src": "787:34:50", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "functionReturnParameters": 6929, "id": 6931, "nodeType": "Return", "src": "780:41:50"}]}, "documentation": null, "id": 6933, "implemented": true, "kind": "function", "modifiers": [], "name": "TransferOwnerToZeroError", "nodeType": "FunctionDefinition", "parameters": {"id": 6926, "nodeType": "ParameterList", "parameters": [], "src": "702:2:50"}, "returnParameters": {"id": 6929, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6928, "name": "", "nodeType": "VariableDeclaration", "scope": 6933, "src": "752:12:50", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6927, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "752:5:50", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "751:14:50"}, "scope": 6934, "src": "669:159:50", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 6935, "src": "26:804:50"}], "src": "0:831:50"}, "id": 50}, "contracts/exchange/contracts-utils/contracts/src/LibReentrancyGuardRichErrors.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibReentrancyGuardRichErrors.sol", "exportedSymbols": {"LibReentrancyGuardRichErrors": [6948]}, "id": 6949, "nodeType": "SourceUnit", "nodes": [{"id": 6936, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:51"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 6948, "linearizedBaseContracts": [6948], "name": "LibReentrancyGuardRichErrors", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 6939, "name": "ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES", "nodeType": "VariableDeclaration", "scope": 6948, "src": "703:87:51", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes"}, "typeName": {"id": 6937, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "703:5:51", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": {"argumentTypes": null, "hexValue": "0c3b823f", "id": 6938, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "777:13:51", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_d261d2e815d8c39d72336aaac01e7d0fb51ea229fc428ddc5ef0f3800568525d", "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)"}, "value": null}, "visibility": "internal"}, {"body": {"id": 6946, "nodeType": "Block", "src": "939:63:51", "statements": [{"expression": {"argumentTypes": null, "id": 6944, "name": "ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6939, "src": "956:39:51", "typeDescriptions": {"typeIdentifier": "t_bytes_memory", "typeString": "bytes memory"}}, "functionReturnParameters": 6943, "id": 6945, "nodeType": "Return", "src": "949:46:51"}]}, "documentation": null, "id": 6947, "implemented": true, "kind": "function", "modifiers": [], "name": "IllegalReentrancyError", "nodeType": "FunctionDefinition", "parameters": {"id": 6940, "nodeType": "ParameterList", "parameters": [], "src": "871:2:51"}, "returnParameters": {"id": 6943, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6942, "name": "", "nodeType": "VariableDeclaration", "scope": 6947, "src": "921:12:51", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6941, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "921:5:51", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "920:14:51"}, "scope": 6948, "src": "840:162:51", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 6949, "src": "606:398:51"}], "src": "580:425:51"}, "id": 51}, "contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "exportedSymbols": {"LibRichErrors": [6977]}, "id": 6978, "nodeType": "SourceUnit", "nodes": [{"id": 6950, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:52"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 6977, "linearizedBaseContracts": [6977], "name": "LibRichErrors", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 6953, "name": "STANDARD_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 6977, "src": "677:69:52", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 6951, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "677:6:52", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30783038633337396130", "id": 6952, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "736:10:52", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_147028384_by_1", "typeString": "int_const 147028384"}, "value": "0x08c379a0"}, "visibility": "internal"}, {"body": {"id": 6968, "nodeType": "Block", "src": "1229:121:52", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 6962, "name": "STANDARD_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6953, "src": "1282:23:52", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 6964, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6955, "src": "1325:7:52", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 6963, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1319:5:52", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}, "id": 6965, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1319:14:52", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 6960, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "1246:3:52", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 6961, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1246:22:52", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 6966, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1246:97:52", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 6959, "id": 6967, "nodeType": "Return", "src": "1239:104:52"}]}, "documentation": "@dev ABI encode a standard, string revert error payload.\n This is the same payload that would be included by a `revert(string)`\n solidity statement. It has the function signature `Error(string)`.\n @param message The error string.\n @return The ABI encoded error.", "id": 6969, "implemented": true, "kind": "function", "modifiers": [], "name": "StandardError", "nodeType": "FunctionDefinition", "parameters": {"id": 6956, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6955, "name": "message", "nodeType": "VariableDeclaration", "scope": 6969, "src": "1136:21:52", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 6954, "name": "string", "nodeType": "ElementaryTypeName", "src": "1136:6:52", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "value": null, "visibility": "internal"}], "src": "1126:37:52"}, "returnParameters": {"id": 6959, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6958, "name": "", "nodeType": "VariableDeclaration", "scope": 6969, "src": "1211:12:52", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6957, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1211:5:52", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1210:14:52"}, "scope": 6977, "src": "1104:246:52", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 6975, "nodeType": "Block", "src": "1586:95:52", "statements": [{"externalReferences": [{"errorData": {"declaration": 6971, "isOffset": false, "isSlot": false, "src": "1654:9:52", "valueSize": 1}}, {"errorData": {"declaration": 6971, "isOffset": false, "isSlot": false, "src": "1630:9:52", "valueSize": 1}}], "id": 6974, "nodeType": "InlineAssembly", "operations": "{\n revert(add(errorData, 0x20), mload(errorData))\n}", "src": "1596:79:52"}]}, "documentation": "@dev Reverts an encoded rich revert reason `errorData`.\n @param errorData ABI encoded error data.", "id": 6976, "implemented": true, "kind": "function", "modifiers": [], "name": "rrevert", "nodeType": "FunctionDefinition", "parameters": {"id": 6972, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6971, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 6976, "src": "1528:22:52", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 6970, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1528:5:52", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1527:24:52"}, "returnParameters": {"id": 6973, "nodeType": "ParameterList", "parameters": [], "src": "1586:0:52"}, "scope": 6977, "src": "1511:170:52", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 6978, "src": "606:1077:52"}], "src": "580:1104:52"}, "id": 52}, "contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibSafeMath.sol", "exportedSymbols": {"LibSafeMath": [7165]}, "id": 7166, "nodeType": "SourceUnit", "nodes": [{"id": 6979, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "0:23:53"}, {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "./LibRichErrors.sol", "id": 6980, "nodeType": "ImportDirective", "scope": 7166, "sourceUnit": 6978, "src": "25:29:53", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibSafeMathRichErrors.sol", "file": "./LibSafeMathRichErrors.sol", "id": 6981, "nodeType": "ImportDirective", "scope": 7166, "sourceUnit": 7221, "src": "55:37:53", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 7165, "linearizedBaseContracts": [7165], "name": "LibSafeMath", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 7025, "nodeType": "Block", "src": "221:349:53", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6992, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6990, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6983, "src": "235:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 6991, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "240:1:53", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "235:6:53", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 6996, "nodeType": "IfStatement", "src": "231:45:53", "trueBody": {"id": 6995, "nodeType": "Block", "src": "243:33:53", "statements": [{"expression": {"argumentTypes": null, "hexValue": "30", "id": 6993, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "264:1:53", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "functionReturnParameters": 6989, "id": 6994, "nodeType": "Return", "src": "257:8:53"}]}}, {"assignments": [6998], "declarations": [{"constant": false, "id": 6998, "name": "c", "nodeType": "VariableDeclaration", "scope": 7025, "src": "285:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6997, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "285:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 7002, "initialValue": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7001, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 6999, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6983, "src": "297:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"argumentTypes": null, "id": 7000, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6985, "src": "301:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "297:5:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "285:17:53"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7005, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 7003, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6998, "src": "316:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"argumentTypes": null, "id": 7004, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6983, "src": "320:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "316:5:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 7006, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6985, "src": "325:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "316:10:53", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 7022, "nodeType": "IfStatement", "src": "312:234:53", "trueBody": {"id": 7021, "nodeType": "Block", "src": "328:218:53", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 7013, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7220, "src": "421:21:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$7220_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 7014, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BinOpErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 7178, "src": "421:37:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BinOpErrorCodes_$7178_$", "typeString": "type(enum LibSafeMathRichErrors.BinOpErrorCodes)"}}, "id": 7015, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "MULTIPLICATION_OVERFLOW", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "421:61:53", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, {"argumentTypes": null, "id": 7016, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6983, "src": "500:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 7017, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6985, "src": "519:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 7011, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7220, "src": "364:21:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$7220_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 7012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Uint256BinOpError", "nodeType": "MemberAccess", "referencedDeclaration": 7202, "src": "364:39:53", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BinOpErrorCodes_$7178_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibSafeMathRichErrors.BinOpErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 7018, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "364:170:53", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 7008, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "342:13:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 7010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "342:21:53", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 7019, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "342:193:53", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7020, "nodeType": "ExpressionStatement", "src": "342:193:53"}]}}, {"expression": {"argumentTypes": null, "id": 7023, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6998, "src": "562:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 6989, "id": 7024, "nodeType": "Return", "src": "555:8:53"}]}, "documentation": null, "id": 7026, "implemented": true, "kind": "function", "modifiers": [], "name": "safeMul", "nodeType": "FunctionDefinition", "parameters": {"id": 6986, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6983, "name": "a", "nodeType": "VariableDeclaration", "scope": 7026, "src": "139:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6982, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "139:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 6985, "name": "b", "nodeType": "VariableDeclaration", "scope": 7026, "src": "150:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6984, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "150:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "138:22:53"}, "returnParameters": {"id": 6989, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6988, "name": "", "nodeType": "VariableDeclaration", "scope": 7026, "src": "208:7:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "208:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "207:9:53"}, "scope": 7165, "src": "122:448:53", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 7061, "nodeType": "Block", "src": "675:284:53", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 7035, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7030, "src": "689:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 7036, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "694:1:53", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "689:6:53", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 7052, "nodeType": "IfStatement", "src": "685:223:53", "trueBody": {"id": 7051, "nodeType": "Block", "src": "697:211:53", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 7043, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7220, "src": "790:21:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$7220_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 7044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BinOpErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 7178, "src": "790:37:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BinOpErrorCodes_$7178_$", "typeString": "type(enum LibSafeMathRichErrors.BinOpErrorCodes)"}}, "id": 7045, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "DIVISION_BY_ZERO", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "790:54:53", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, {"argumentTypes": null, "id": 7046, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7028, "src": "862:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 7047, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7030, "src": "881:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 7041, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7220, "src": "733:21:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$7220_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 7042, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Uint256BinOpError", "nodeType": "MemberAccess", "referencedDeclaration": 7202, "src": "733:39:53", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BinOpErrorCodes_$7178_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibSafeMathRichErrors.BinOpErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 7048, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "733:163:53", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 7038, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "711:13:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 7040, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "711:21:53", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 7049, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "711:186:53", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7050, "nodeType": "ExpressionStatement", "src": "711:186:53"}]}}, {"assignments": [7054], "declarations": [{"constant": false, "id": 7054, "name": "c", "nodeType": "VariableDeclaration", "scope": 7061, "src": "917:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7053, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "917:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 7058, "initialValue": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 7055, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7028, "src": "929:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"argumentTypes": null, "id": 7056, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7030, "src": "933:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "929:5:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "917:17:53"}, {"expression": {"argumentTypes": null, "id": 7059, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7054, "src": "951:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 7034, "id": 7060, "nodeType": "Return", "src": "944:8:53"}]}, "documentation": null, "id": 7062, "implemented": true, "kind": "function", "modifiers": [], "name": "safeDiv", "nodeType": "FunctionDefinition", "parameters": {"id": 7031, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7028, "name": "a", "nodeType": "VariableDeclaration", "scope": 7062, "src": "593:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7027, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "593:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7030, "name": "b", "nodeType": "VariableDeclaration", "scope": 7062, "src": "604:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7029, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "604:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "592:22:53"}, "returnParameters": {"id": 7034, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7033, "name": "", "nodeType": "VariableDeclaration", "scope": 7062, "src": "662:7:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7032, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "662:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "661:9:53"}, "scope": 7165, "src": "576:383:53", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 7093, "nodeType": "Block", "src": "1064:265:53", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7073, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 7071, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7066, "src": "1078:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "id": 7072, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7064, "src": "1082:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1078:5:53", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 7088, "nodeType": "IfStatement", "src": "1074:227:53", "trueBody": {"id": 7087, "nodeType": "Block", "src": "1085:216:53", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 7079, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7220, "src": "1178:21:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$7220_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 7080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BinOpErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 7178, "src": "1178:37:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BinOpErrorCodes_$7178_$", "typeString": "type(enum LibSafeMathRichErrors.BinOpErrorCodes)"}}, "id": 7081, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "SUBTRACTION_UNDERFLOW", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1178:59:53", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, {"argumentTypes": null, "id": 7082, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7064, "src": "1255:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 7083, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7066, "src": "1274:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 7077, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7220, "src": "1121:21:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$7220_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 7078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Uint256BinOpError", "nodeType": "MemberAccess", "referencedDeclaration": 7202, "src": "1121:39:53", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BinOpErrorCodes_$7178_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibSafeMathRichErrors.BinOpErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 7084, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1121:168:53", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 7074, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "1099:13:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 7076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "1099:21:53", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 7085, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1099:191:53", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7086, "nodeType": "ExpressionStatement", "src": "1099:191:53"}]}}, {"expression": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7091, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 7089, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7064, "src": "1317:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"argumentTypes": null, "id": 7090, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7066, "src": "1321:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1317:5:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 7070, "id": 7092, "nodeType": "Return", "src": "1310:12:53"}]}, "documentation": null, "id": 7094, "implemented": true, "kind": "function", "modifiers": [], "name": "safeSub", "nodeType": "FunctionDefinition", "parameters": {"id": 7067, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7064, "name": "a", "nodeType": "VariableDeclaration", "scope": 7094, "src": "982:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7063, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "982:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7066, "name": "b", "nodeType": "VariableDeclaration", "scope": 7094, "src": "993:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7065, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "993:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "981:22:53"}, "returnParameters": {"id": 7070, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7069, "name": "", "nodeType": "VariableDeclaration", "scope": 7094, "src": "1051:7:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7068, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1051:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1050:9:53"}, "scope": 7165, "src": "965:364:53", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 7129, "nodeType": "Block", "src": "1434:284:53", "statements": [{"assignments": [7104], "declarations": [{"constant": false, "id": 7104, "name": "c", "nodeType": "VariableDeclaration", "scope": 7129, "src": "1444:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7103, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1444:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 7108, "initialValue": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 7105, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7096, "src": "1456:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"argumentTypes": null, "id": 7106, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7098, "src": "1460:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1456:5:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1444:17:53"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 7109, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7104, "src": "1475:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "id": 7110, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7096, "src": "1479:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1475:5:53", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 7126, "nodeType": "IfStatement", "src": "1471:223:53", "trueBody": {"id": 7125, "nodeType": "Block", "src": "1482:212:53", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 7117, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7220, "src": "1575:21:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$7220_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 7118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "BinOpErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 7178, "src": "1575:37:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_BinOpErrorCodes_$7178_$", "typeString": "type(enum LibSafeMathRichErrors.BinOpErrorCodes)"}}, "id": 7119, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ADDITION_OVERFLOW", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1575:55:53", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, {"argumentTypes": null, "id": 7120, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7096, "src": "1648:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 7121, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7098, "src": "1667:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 7115, "name": "LibSafeMathRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7220, "src": "1518:21:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibSafeMathRichErrors_$7220_$", "typeString": "type(library LibSafeMathRichErrors)"}}, "id": 7116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Uint256BinOpError", "nodeType": "MemberAccess", "referencedDeclaration": 7202, "src": "1518:39:53", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_BinOpErrorCodes_$7178_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (enum LibSafeMathRichErrors.BinOpErrorCodes,uint256,uint256) pure returns (bytes memory)"}}, "id": 7122, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1518:164:53", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 7112, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "1496:13:53", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 7114, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "1496:21:53", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 7123, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1496:187:53", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7124, "nodeType": "ExpressionStatement", "src": "1496:187:53"}]}}, {"expression": {"argumentTypes": null, "id": 7127, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7104, "src": "1710:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 7102, "id": 7128, "nodeType": "Return", "src": "1703:8:53"}]}, "documentation": null, "id": 7130, "implemented": true, "kind": "function", "modifiers": [], "name": "safeAdd", "nodeType": "FunctionDefinition", "parameters": {"id": 7099, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7096, "name": "a", "nodeType": "VariableDeclaration", "scope": 7130, "src": "1352:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7095, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1352:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7098, "name": "b", "nodeType": "VariableDeclaration", "scope": 7130, "src": "1363:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7097, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1363:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1351:22:53"}, "returnParameters": {"id": 7102, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7101, "name": "", "nodeType": "VariableDeclaration", "scope": 7130, "src": "1421:7:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7100, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1421:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1420:9:53"}, "scope": 7165, "src": "1335:383:53", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 7146, "nodeType": "Block", "src": "1822:38:53", "statements": [{"expression": {"argumentTypes": null, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 7139, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7132, "src": "1839:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"argumentTypes": null, "id": 7140, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7134, "src": "1844:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1839:6:53", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"argumentTypes": null, "id": 7143, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7134, "src": "1852:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1839:14:53", "trueExpression": {"argumentTypes": null, "id": 7142, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7132, "src": "1848:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 7138, "id": 7145, "nodeType": "Return", "src": "1832:21:53"}]}, "documentation": null, "id": 7147, "implemented": true, "kind": "function", "modifiers": [], "name": "max256", "nodeType": "FunctionDefinition", "parameters": {"id": 7135, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7132, "name": "a", "nodeType": "VariableDeclaration", "scope": 7147, "src": "1740:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7131, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1740:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7134, "name": "b", "nodeType": "VariableDeclaration", "scope": 7147, "src": "1751:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1751:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1739:22:53"}, "returnParameters": {"id": 7138, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7137, "name": "", "nodeType": "VariableDeclaration", "scope": 7147, "src": "1809:7:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7136, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1809:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1808:9:53"}, "scope": 7165, "src": "1724:136:53", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 7163, "nodeType": "Block", "src": "1964:37:53", "statements": [{"expression": {"argumentTypes": null, "condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 7156, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7149, "src": "1981:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"argumentTypes": null, "id": 7157, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7151, "src": "1985:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1981:5:53", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"argumentTypes": null, "id": 7160, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7151, "src": "1993:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1981:13:53", "trueExpression": {"argumentTypes": null, "id": 7159, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7149, "src": "1989:1:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 7155, "id": 7162, "nodeType": "Return", "src": "1974:20:53"}]}, "documentation": null, "id": 7164, "implemented": true, "kind": "function", "modifiers": [], "name": "min256", "nodeType": "FunctionDefinition", "parameters": {"id": 7152, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7149, "name": "a", "nodeType": "VariableDeclaration", "scope": 7164, "src": "1882:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7148, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1882:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7151, "name": "b", "nodeType": "VariableDeclaration", "scope": 7164, "src": "1893:9:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7150, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1893:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1881:22:53"}, "returnParameters": {"id": 7155, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7154, "name": "", "nodeType": "VariableDeclaration", "scope": 7164, "src": "1951:7:53", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7153, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1951:7:53", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1950:9:53"}, "scope": 7165, "src": "1866:135:53", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 7166, "src": "95:1908:53"}], "src": "0:2004:53"}, "id": 53}, "contracts/exchange/contracts-utils/contracts/src/LibSafeMathRichErrors.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibSafeMathRichErrors.sol", "exportedSymbols": {"LibSafeMathRichErrors": [7220]}, "id": 7221, "nodeType": "SourceUnit", "nodes": [{"id": 7167, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "0:23:54"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 7220, "linearizedBaseContracts": [7220], "name": "LibSafeMathRichErrors", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 7170, "name": "UINT256_BINOP_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 7220, "src": "132:74:54", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 7168, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "132:6:54", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786539343663316262", "id": 7169, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "196:10:54", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3913728443_by_1", "typeString": "int_const 3913728443"}, "value": "0xe946c1bb"}, "visibility": "internal"}, {"constant": true, "id": 7173, "name": "UINT256_DOWNCAST_ERROR_SELECTOR", "nodeType": "VariableDeclaration", "scope": 7220, "src": "277:77:54", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 7171, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "277:6:54", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"argumentTypes": null, "hexValue": "30786339393661663762", "id": 7172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "344:10:54", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_3382095739_by_1", "typeString": "int_const 3382095739"}, "value": "0xc996af7b"}, "visibility": "internal"}, {"canonicalName": "LibSafeMathRichErrors.BinOpErrorCodes", "id": 7178, "members": [{"id": 7174, "name": "ADDITION_OVERFLOW", "nodeType": "EnumValue", "src": "392:17:54"}, {"id": 7175, "name": "MULTIPLICATION_OVERFLOW", "nodeType": "EnumValue", "src": "419:23:54"}, {"id": 7176, "name": "SUBTRACTION_UNDERFLOW", "nodeType": "EnumValue", "src": "452:21:54"}, {"id": 7177, "name": "DIVISION_BY_ZERO", "nodeType": "EnumValue", "src": "483:16:54"}], "name": "BinOpErrorCodes", "nodeType": "EnumDefinition", "src": "361:144:54"}, {"canonicalName": "LibSafeMathRichErrors.DowncastErrorCodes", "id": 7182, "members": [{"id": 7179, "name": "VALUE_TOO_LARGE_TO_DOWNCAST_TO_UINT32", "nodeType": "EnumValue", "src": "545:37:54"}, {"id": 7180, "name": "VALUE_TOO_LARGE_TO_DOWNCAST_TO_UINT64", "nodeType": "EnumValue", "src": "592:37:54"}, {"id": 7181, "name": "VALUE_TOO_LARGE_TO_DOWNCAST_TO_UINT96", "nodeType": "EnumValue", "src": "639:37:54"}], "name": "DowncastErrorCodes", "nodeType": "EnumDefinition", "src": "511:171:54"}, {"body": {"id": 7201, "nodeType": "Block", "src": "902:151:54", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 7195, "name": "UINT256_BINOP_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7170, "src": "955:28:54", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 7196, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7184, "src": "997:9:54", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, {"argumentTypes": null, "id": 7197, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7186, "src": "1020:1:54", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 7198, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7188, "src": "1035:1:54", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 7193, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "919:3:54", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 7194, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "919:22:54", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 7199, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "919:127:54", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 7192, "id": 7200, "nodeType": "Return", "src": "912:134:54"}]}, "documentation": null, "id": 7202, "implemented": true, "kind": "function", "modifiers": [], "name": "Uint256BinOpError", "nodeType": "FunctionDefinition", "parameters": {"id": 7189, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7184, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 7202, "src": "767:25:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}, "typeName": {"contractScope": null, "id": 7183, "name": "BinOpErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7178, "src": "767:15:54", "typeDescriptions": {"typeIdentifier": "t_enum$_BinOpErrorCodes_$7178", "typeString": "enum LibSafeMathRichErrors.BinOpErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7186, "name": "a", "nodeType": "VariableDeclaration", "scope": 7202, "src": "802:9:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7185, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "802:7:54", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7188, "name": "b", "nodeType": "VariableDeclaration", "scope": 7202, "src": "821:9:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7187, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "821:7:54", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "757:79:54"}, "returnParameters": {"id": 7192, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7191, "name": "", "nodeType": "VariableDeclaration", "scope": 7202, "src": "884:12:54", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7190, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "884:5:54", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "883:14:54"}, "scope": 7220, "src": "731:322:54", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 7218, "nodeType": "Block", "src": "1217:139:54", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 7213, "name": "UINT256_DOWNCAST_ERROR_SELECTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7173, "src": "1270:31:54", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 7214, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7204, "src": "1315:9:54", "typeDescriptions": {"typeIdentifier": "t_enum$_DowncastErrorCodes_$7182", "typeString": "enum LibSafeMathRichErrors.DowncastErrorCodes"}}, {"argumentTypes": null, "id": 7215, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7206, "src": "1338:1:54", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_enum$_DowncastErrorCodes_$7182", "typeString": "enum LibSafeMathRichErrors.DowncastErrorCodes"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 7211, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "1234:3:54", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 7212, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1234:22:54", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 7216, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1234:115:54", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 7210, "id": 7217, "nodeType": "Return", "src": "1227:122:54"}]}, "documentation": null, "id": 7219, "implemented": true, "kind": "function", "modifiers": [], "name": "Uint256DowncastError", "nodeType": "FunctionDefinition", "parameters": {"id": 7207, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7204, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 7219, "src": "1098:28:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_DowncastErrorCodes_$7182", "typeString": "enum LibSafeMathRichErrors.DowncastErrorCodes"}, "typeName": {"contractScope": null, "id": 7203, "name": "DowncastErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7182, "src": "1098:18:54", "typeDescriptions": {"typeIdentifier": "t_enum$_DowncastErrorCodes_$7182", "typeString": "enum LibSafeMathRichErrors.DowncastErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7206, "name": "a", "nodeType": "VariableDeclaration", "scope": 7219, "src": "1136:9:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7205, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:54", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1088:63:54"}, "returnParameters": {"id": 7210, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7209, "name": "", "nodeType": "VariableDeclaration", "scope": 7219, "src": "1199:12:54", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7208, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1199:5:54", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1198:14:54"}, "scope": 7220, "src": "1059:297:54", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}], "scope": 7221, "src": "26:1332:54"}], "src": "0:1359:54"}, "id": 54}, "contracts/exchange/contracts-utils/contracts/src/Ownable.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/Ownable.sol", "exportedSymbols": {"Ownable": [7301]}, "id": 7302, "nodeType": "SourceUnit", "nodes": [{"id": 7222, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:55"}, {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/interfaces/IOwnable.sol", "file": "./interfaces/IOwnable.sol", "id": 7223, "nodeType": "ImportDirective", "scope": 7302, "sourceUnit": 7468, "src": "605:35:55", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibOwnableRichErrors.sol", "file": "./LibOwnableRichErrors.sol", "id": 7224, "nodeType": "ImportDirective", "scope": 7302, "sourceUnit": 6935, "src": "641:36:55", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "./LibRichErrors.sol", "id": 7225, "nodeType": "ImportDirective", "scope": 7302, "sourceUnit": 6978, "src": "678:29:55", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 7226, "name": "IOwnable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7467, "src": "734:8:55", "typeDescriptions": {"typeIdentifier": "t_contract$_IOwnable_$7467", "typeString": "contract IOwnable"}}, "id": 7227, "nodeType": "InheritanceSpecifier", "src": "734:8:55"}], "contractDependencies": [7467], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 7301, "linearizedBaseContracts": [7301, 7467], "name": "Ownable", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 7229, "name": "owner", "nodeType": "VariableDeclaration", "scope": 7301, "src": "827:20:55", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7228, "name": "address", "nodeType": "ElementaryTypeName", "src": "827:7:55", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "public"}, {"body": {"id": 7237, "nodeType": "Block", "src": "888:35:55", "statements": [{"expression": {"argumentTypes": null, "id": 7235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 7232, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7229, "src": "898:5:55", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 7233, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "906:3:55", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 7234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "906:10:55", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "898:18:55", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7236, "nodeType": "ExpressionStatement", "src": "898:18:55"}]}, "documentation": null, "id": 7238, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": {"id": 7230, "nodeType": "ParameterList", "parameters": [], "src": "866:2:55"}, "returnParameters": {"id": 7231, "nodeType": "ParameterList", "parameters": [], "src": "888:0:55"}, "scope": 7301, "src": "854:69:55", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public"}, {"body": {"id": 7244, "nodeType": "Block", "src": "950:50:55", "statements": [{"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7240, "name": "_assertSenderIsOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7300, "src": "960:20:55", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view"}}, "id": 7241, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "960:22:55", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7242, "nodeType": "ExpressionStatement", "src": "960:22:55"}, {"id": 7243, "nodeType": "PlaceholderStatement", "src": "992:1:55"}]}, "documentation": null, "id": 7245, "name": "onlyOwner", "nodeType": "ModifierDefinition", "parameters": {"id": 7239, "nodeType": "ParameterList", "parameters": [], "src": "947:2:55"}, "src": "929:71:55", "visibility": "internal"}, {"body": {"id": 7278, "nodeType": "Block", "src": "1179:247:55", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 7256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 7252, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7247, "src": "1193:8:55", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "30", "id": 7254, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1213:1:55", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 7253, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1205:7:55", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 7255, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1205:10:55", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "src": "1193:22:55", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 7276, "nodeType": "Block", "src": "1318:102:55", "statements": [{"expression": {"argumentTypes": null, "id": 7268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 7266, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7229, "src": "1332:5:55", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "id": 7267, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7247, "src": "1340:8:55", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1332:16:55", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7269, "nodeType": "ExpressionStatement", "src": "1332:16:55"}, {"eventCall": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 7271, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "1388:3:55", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 7272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1388:10:55", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, {"argumentTypes": null, "id": 7273, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7247, "src": "1400:8:55", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 7270, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7461, "src": "1367:20:55", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 7274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1367:42:55", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7275, "nodeType": "EmitStatement", "src": "1362:47:55"}]}, "id": 7277, "nodeType": "IfStatement", "src": "1189:231:55", "trueBody": {"id": 7265, "nodeType": "Block", "src": "1217:95:55", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 7260, "name": "LibOwnableRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6934, "src": "1253:20:55", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOwnableRichErrors_$6934_$", "typeString": "type(library LibOwnableRichErrors)"}}, "id": 7261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransferOwnerToZeroError", "nodeType": "MemberAccess", "referencedDeclaration": 6933, "src": "1253:45:55", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 7262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1253:47:55", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 7257, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "1231:13:55", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 7259, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "1231:21:55", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 7263, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1231:70:55", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7264, "nodeType": "ExpressionStatement", "src": "1231:70:55"}]}}]}, "documentation": "@dev Change the owner of this contract.\n @param newOwner New owner address.", "id": 7279, "implemented": true, "kind": "function", "modifiers": [{"arguments": null, "id": 7250, "modifierName": {"argumentTypes": null, "id": 7249, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7245, "src": "1165:9:55", "typeDescriptions": {"typeIdentifier": "t_modifier$__$", "typeString": "modifier ()"}}, "nodeType": "ModifierInvocation", "src": "1165:9:55"}], "name": "transferOwnership", "nodeType": "FunctionDefinition", "parameters": {"id": 7248, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7247, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 7279, "src": "1124:16:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7246, "name": "address", "nodeType": "ElementaryTypeName", "src": "1124:7:55", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1123:18:55"}, "returnParameters": {"id": 7251, "nodeType": "ParameterList", "parameters": [], "src": "1179:0:55"}, "scope": 7301, "src": "1097:329:55", "stateMutability": "nonpayable", "superFunction": 7466, "visibility": "public"}, {"body": {"id": 7299, "nodeType": "Block", "src": "1498:189:55", "statements": [{"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 7285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 7282, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "1512:3:55", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 7283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1512:10:55", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"argumentTypes": null, "id": 7284, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7229, "src": "1526:5:55", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1512:19:55", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 7298, "nodeType": "IfStatement", "src": "1508:173:55", "trueBody": {"id": 7297, "nodeType": "Block", "src": "1533:148:55", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "expression": {"argumentTypes": null, "id": 7291, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "1622:3:55", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 7292, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1622:10:55", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, {"argumentTypes": null, "id": 7293, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7229, "src": "1650:5:55", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address_payable", "typeString": "address payable"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"argumentTypes": null, "id": 7289, "name": "LibOwnableRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6934, "src": "1569:20:55", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOwnableRichErrors_$6934_$", "typeString": "type(library LibOwnableRichErrors)"}}, "id": 7290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OnlyOwnerError", "nodeType": "MemberAccess", "referencedDeclaration": 6925, "src": "1569:35:55", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,address) pure returns (bytes memory)"}}, "id": 7294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1569:100:55", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 7286, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "1547:13:55", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 7288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "1547:21:55", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 7295, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1547:123:55", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7296, "nodeType": "ExpressionStatement", "src": "1547:123:55"}]}}]}, "documentation": null, "id": 7300, "implemented": true, "kind": "function", "modifiers": [], "name": "_assertSenderIsOwner", "nodeType": "FunctionDefinition", "parameters": {"id": 7280, "nodeType": "ParameterList", "parameters": [], "src": "1461:2:55"}, "returnParameters": {"id": 7281, "nodeType": "ParameterList", "parameters": [], "src": "1498:0:55"}, "scope": 7301, "src": "1432:255:55", "stateMutability": "view", "superFunction": null, "visibility": "internal"}], "scope": 7302, "src": "710:979:55"}], "src": "580:1110:55"}, "id": 55}, "contracts/exchange/contracts-utils/contracts/src/ReentrancyGuard.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/ReentrancyGuard.sol", "exportedSymbols": {"ReentrancyGuard": [7346]}, "id": 7347, "nodeType": "SourceUnit", "nodes": [{"id": 7303, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:56"}, {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibReentrancyGuardRichErrors.sol", "file": "./LibReentrancyGuardRichErrors.sol", "id": 7304, "nodeType": "ImportDirective", "scope": 7347, "sourceUnit": 6949, "src": "605:44:56", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/LibRichErrors.sol", "file": "./LibRichErrors.sol", "id": 7305, "nodeType": "ImportDirective", "scope": 7347, "sourceUnit": 6978, "src": "650:29:56", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 7346, "linearizedBaseContracts": [7346], "name": "ReentrancyGuard", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 7308, "name": "_locked", "nodeType": "VariableDeclaration", "scope": 7346, "src": "744:28:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7306, "name": "bool", "nodeType": "ElementaryTypeName", "src": "744:4:56", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": {"argumentTypes": null, "hexValue": "66616c7365", "id": 7307, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "767:5:56", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "visibility": "private"}, {"body": {"id": 7317, "nodeType": "Block", "src": "949:86:56", "statements": [{"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7310, "name": "_lockMutexOrThrowIfAlreadyLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7337, "src": "959:32:56", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 7311, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "959:34:56", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7312, "nodeType": "ExpressionStatement", "src": "959:34:56"}, {"id": 7313, "nodeType": "PlaceholderStatement", "src": "1003:1:56"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7314, "name": "_unlockMutex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7345, "src": "1014:12:56", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 7315, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1014:14:56", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7316, "nodeType": "ExpressionStatement", "src": "1014:14:56"}]}, "documentation": "@dev Functions with this modifer cannot be reentered. The mutex will be locked\n before function execution and unlocked after.", "id": 7318, "name": "nonReentrant", "nodeType": "ModifierDefinition", "parameters": {"id": 7309, "nodeType": "ParameterList", "parameters": [], "src": "946:2:56"}, "src": "925:110:56", "visibility": "internal"}, {"body": {"id": 7336, "nodeType": "Block", "src": "1106:244:56", "statements": [{"condition": {"argumentTypes": null, "id": 7321, "name": "_locked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7308, "src": "1157:7:56", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 7331, "nodeType": "IfStatement", "src": "1153:144:56", "trueBody": {"id": 7330, "nodeType": "Block", "src": "1166:131:56", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 7325, "name": "LibReentrancyGuardRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6948, "src": "1219:28:56", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibReentrancyGuardRichErrors_$6948_$", "typeString": "type(library LibReentrancyGuardRichErrors)"}}, "id": 7326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "IllegalReentrancyError", "nodeType": "MemberAccess", "referencedDeclaration": 6947, "src": "1219:51:56", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 7327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1219:53:56", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": null, "id": 7322, "name": "LibRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6977, "src": "1180:13:56", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibRichErrors_$6977_$", "typeString": "type(library LibRichErrors)"}}, "id": 7324, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rrevert", "nodeType": "MemberAccess", "referencedDeclaration": 6976, "src": "1180:21:56", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure"}}, "id": 7328, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1180:106:56", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7329, "nodeType": "ExpressionStatement", "src": "1180:106:56"}]}}, {"expression": {"argumentTypes": null, "id": 7334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 7332, "name": "_locked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7308, "src": "1329:7:56", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "74727565", "id": 7333, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1339:4:56", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "1329:14:56", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7335, "nodeType": "ExpressionStatement", "src": "1329:14:56"}]}, "documentation": null, "id": 7337, "implemented": true, "kind": "function", "modifiers": [], "name": "_lockMutexOrThrowIfAlreadyLocked", "nodeType": "FunctionDefinition", "parameters": {"id": 7319, "nodeType": "ParameterList", "parameters": [], "src": "1082:2:56"}, "returnParameters": {"id": 7320, "nodeType": "ParameterList", "parameters": [], "src": "1106:0:56"}, "scope": 7346, "src": "1041:309:56", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 7344, "nodeType": "Block", "src": "1401:57:56", "statements": [{"expression": {"argumentTypes": null, "id": 7342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 7340, "name": "_locked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7308, "src": "1436:7:56", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "66616c7365", "id": 7341, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1446:5:56", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "1436:15:56", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7343, "nodeType": "ExpressionStatement", "src": "1436:15:56"}]}, "documentation": null, "id": 7345, "implemented": true, "kind": "function", "modifiers": [], "name": "_unlockMutex", "nodeType": "FunctionDefinition", "parameters": {"id": 7338, "nodeType": "ParameterList", "parameters": [], "src": "1377:2:56"}, "returnParameters": {"id": 7339, "nodeType": "ParameterList", "parameters": [], "src": "1401:0:56"}, "scope": 7346, "src": "1356:102:56", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}], "scope": 7347, "src": "682:778:56"}], "src": "580:881:56"}, "id": 56}, "contracts/exchange/contracts-utils/contracts/src/Refundable.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/Refundable.sol", "exportedSymbols": {"Refundable": [7453]}, "id": 7454, "nodeType": "SourceUnit", "nodes": [{"id": 7348, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:57"}, {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/ReentrancyGuard.sol", "file": "./ReentrancyGuard.sol", "id": 7349, "nodeType": "ImportDirective", "scope": 7454, "sourceUnit": 7347, "src": "605:31:57", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 7350, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7346, "src": "666:15:57", "typeDescriptions": {"typeIdentifier": "t_contract$_ReentrancyGuard_$7346", "typeString": "contract ReentrancyGuard"}}, "id": 7351, "nodeType": "InheritanceSpecifier", "src": "666:15:57"}], "contractDependencies": [7346], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 7453, "linearizedBaseContracts": [7453, 7346], "name": "Refundable", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 7353, "name": "_shouldNotRefund", "nodeType": "VariableDeclaration", "scope": 7453, "src": "776:30:57", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7352, "name": "bool", "nodeType": "ElementaryTypeName", "src": "776:4:57", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}, {"body": {"id": 7359, "nodeType": "Block", "src": "841:60:57", "statements": [{"id": 7355, "nodeType": "PlaceholderStatement", "src": "851:1:57"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7356, "name": "_refundNonZeroBalanceIfEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7401, "src": "862:30:57", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 7357, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "862:32:57", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7358, "nodeType": "ExpressionStatement", "src": "862:32:57"}]}, "documentation": null, "id": 7360, "name": "refundFinalBalance", "nodeType": "ModifierDefinition", "parameters": {"id": 7354, "nodeType": "ParameterList", "parameters": [], "src": "841:0:57"}, "src": "813:88:57", "visibility": "internal"}, {"body": {"id": 7372, "nodeType": "Block", "src": "944:128:57", "statements": [{"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7362, "name": "_lockMutexOrThrowIfAlreadyLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7337, "src": "954:32:57", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 7363, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "954:34:57", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7364, "nodeType": "ExpressionStatement", "src": "954:34:57"}, {"id": 7365, "nodeType": "PlaceholderStatement", "src": "998:1:57"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7366, "name": "_refundNonZeroBalanceIfEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7401, "src": "1009:30:57", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 7367, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1009:32:57", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7368, "nodeType": "ExpressionStatement", "src": "1009:32:57"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7369, "name": "_unlockMutex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7345, "src": "1051:12:57", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 7370, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1051:14:57", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7371, "nodeType": "ExpressionStatement", "src": "1051:14:57"}]}, "documentation": null, "id": 7373, "name": "refundFinalBalanceNoReentry", "nodeType": "ModifierDefinition", "parameters": {"id": 7361, "nodeType": "ParameterList", "parameters": [], "src": "944:0:57"}, "src": "907:165:57", "visibility": "internal"}, {"body": {"id": 7388, "nodeType": "Block", "src": "1109:177:57", "statements": [{"condition": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7375, "name": "_areRefundsDisabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7452, "src": "1123:19:57", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)"}}, "id": 7376, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1123:21:57", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 7386, "nodeType": "Block", "src": "1178:102:57", "statements": [{"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7379, "name": "_disableRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7433, "src": "1192:14:57", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 7380, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1192:16:57", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7381, "nodeType": "ExpressionStatement", "src": "1192:16:57"}, {"id": 7382, "nodeType": "PlaceholderStatement", "src": "1222:1:57"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7383, "name": "_enableAndRefundNonZeroBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7444, "src": "1237:30:57", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 7384, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1237:32:57", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7385, "nodeType": "ExpressionStatement", "src": "1237:32:57"}]}, "id": 7387, "nodeType": "IfStatement", "src": "1119:161:57", "trueBody": {"id": 7378, "nodeType": "Block", "src": "1146:26:57", "statements": [{"id": 7377, "nodeType": "PlaceholderStatement", "src": "1160:1:57"}]}}]}, "documentation": null, "id": 7389, "name": "disableRefundUntilEnd", "nodeType": "ModifierDefinition", "parameters": {"id": 7374, "nodeType": "ParameterList", "parameters": [], "src": "1109:0:57"}, "src": "1078:208:57", "visibility": "internal"}, {"body": {"id": 7400, "nodeType": "Block", "src": "1355:92:57", "statements": [{"condition": {"argumentTypes": null, "id": 7394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1369:22:57", "subExpression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7392, "name": "_areRefundsDisabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7452, "src": "1370:19:57", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)"}}, "id": 7393, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1370:21:57", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 7399, "nodeType": "IfStatement", "src": "1365:76:57", "trueBody": {"id": 7398, "nodeType": "Block", "src": "1393:48:57", "statements": [{"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7395, "name": "_refundNonZeroBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7425, "src": "1407:21:57", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 7396, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1407:23:57", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7397, "nodeType": "ExpressionStatement", "src": "1407:23:57"}]}}]}, "documentation": null, "id": 7401, "implemented": true, "kind": "function", "modifiers": [], "name": "_refundNonZeroBalanceIfEnabled", "nodeType": "FunctionDefinition", "parameters": {"id": 7390, "nodeType": "ParameterList", "parameters": [], "src": "1331:2:57"}, "returnParameters": {"id": 7391, "nodeType": "ParameterList", "parameters": [], "src": "1355:0:57"}, "scope": 7453, "src": "1292:155:57", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 7424, "nodeType": "Block", "src": "1507:135:57", "statements": [{"assignments": [7405], "declarations": [{"constant": false, "id": 7405, "name": "balance", "nodeType": "VariableDeclaration", "scope": 7424, "src": "1517:15:57", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7404, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1517:7:57", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "id": 7410, "initialValue": {"argumentTypes": null, "expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 7407, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12243, "src": "1543:4:57", "typeDescriptions": {"typeIdentifier": "t_contract$_Refundable_$7453", "typeString": "contract Refundable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Refundable_$7453", "typeString": "contract Refundable"}], "id": 7406, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1535:7:57", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, "id": 7408, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1535:13:57", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1535:21:57", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1517:39:57"}, {"condition": {"argumentTypes": null, "commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 7411, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7405, "src": "1570:7:57", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"argumentTypes": null, "hexValue": "30", "id": 7412, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1580:1:57", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1570:11:57", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": null, "id": 7423, "nodeType": "IfStatement", "src": "1566:70:57", "trueBody": {"id": 7422, "nodeType": "Block", "src": "1583:53:57", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 7419, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7405, "src": "1617:7:57", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 7414, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12091, "src": "1597:3:57", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 7417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1597:10:57", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "id": 7418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1597:19:57", "typeDescriptions": {"typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 7420, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1597:28:57", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7421, "nodeType": "ExpressionStatement", "src": "1597:28:57"}]}}]}, "documentation": null, "id": 7425, "implemented": true, "kind": "function", "modifiers": [], "name": "_refundNonZeroBalance", "nodeType": "FunctionDefinition", "parameters": {"id": 7402, "nodeType": "ParameterList", "parameters": [], "src": "1483:2:57"}, "returnParameters": {"id": 7403, "nodeType": "ParameterList", "parameters": [], "src": "1507:0:57"}, "scope": 7453, "src": "1453:189:57", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 7432, "nodeType": "Block", "src": "1695:40:57", "statements": [{"expression": {"argumentTypes": null, "id": 7430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 7428, "name": "_shouldNotRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7353, "src": "1705:16:57", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "74727565", "id": 7429, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1724:4:57", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "1705:23:57", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7431, "nodeType": "ExpressionStatement", "src": "1705:23:57"}]}, "documentation": null, "id": 7433, "implemented": true, "kind": "function", "modifiers": [], "name": "_disableRefund", "nodeType": "FunctionDefinition", "parameters": {"id": 7426, "nodeType": "ParameterList", "parameters": [], "src": "1671:2:57"}, "returnParameters": {"id": 7427, "nodeType": "ParameterList", "parameters": [], "src": "1695:0:57"}, "scope": 7453, "src": "1648:87:57", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 7443, "nodeType": "Block", "src": "1804:74:57", "statements": [{"expression": {"argumentTypes": null, "id": 7438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 7436, "name": "_shouldNotRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7353, "src": "1814:16:57", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "hexValue": "66616c7365", "id": 7437, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1833:5:57", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "1814:24:57", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7439, "nodeType": "ExpressionStatement", "src": "1814:24:57"}, {"expression": {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "id": 7440, "name": "_refundNonZeroBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7425, "src": "1848:21:57", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 7441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1848:23:57", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7442, "nodeType": "ExpressionStatement", "src": "1848:23:57"}]}, "documentation": null, "id": 7444, "implemented": true, "kind": "function", "modifiers": [], "name": "_enableAndRefundNonZeroBalance", "nodeType": "FunctionDefinition", "parameters": {"id": 7434, "nodeType": "ParameterList", "parameters": [], "src": "1780:2:57"}, "returnParameters": {"id": 7435, "nodeType": "ParameterList", "parameters": [], "src": "1804:0:57"}, "scope": 7453, "src": "1741:137:57", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal"}, {"body": {"id": 7451, "nodeType": "Block", "src": "1972:40:57", "statements": [{"expression": {"argumentTypes": null, "id": 7449, "name": "_shouldNotRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7353, "src": "1989:16:57", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 7448, "id": 7450, "nodeType": "Return", "src": "1982:23:57"}]}, "documentation": null, "id": 7452, "implemented": true, "kind": "function", "modifiers": [], "name": "_areRefundsDisabled", "nodeType": "FunctionDefinition", "parameters": {"id": 7445, "nodeType": "ParameterList", "parameters": [], "src": "1912:2:57"}, "returnParameters": {"id": 7448, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7447, "name": "", "nodeType": "VariableDeclaration", "scope": 7452, "src": "1962:4:57", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7446, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1962:4:57", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "1961:6:57"}, "scope": 7453, "src": "1884:128:57", "stateMutability": "view", "superFunction": null, "visibility": "internal"}], "scope": 7454, "src": "639:1375:57"}], "src": "580:1435:57"}, "id": 57}, "contracts/exchange/contracts-utils/contracts/src/interfaces/IOwnable.sol": {"ast": {"absolutePath": "contracts/exchange/contracts-utils/contracts/src/interfaces/IOwnable.sol", "exportedSymbols": {"IOwnable": [7467]}, "id": 7468, "nodeType": "SourceUnit", "nodes": [{"id": 7455, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:58"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7467, "linearizedBaseContracts": [7467], "name": "IOwnable", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": "@dev Emitted by Ownable when ownership is transferred.\n @param previousOwner The previous owner of the contract.\n @param newOwner The new owner of the contract.", "id": 7461, "name": "OwnershipTransferred", "nodeType": "EventDefinition", "parameters": {"id": 7460, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7457, "indexed": true, "name": "previousOwner", "nodeType": "VariableDeclaration", "scope": 7461, "src": "841:29:58", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7456, "name": "address", "nodeType": "ElementaryTypeName", "src": "841:7:58", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7459, "indexed": true, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 7461, "src": "872:24:58", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7458, "name": "address", "nodeType": "ElementaryTypeName", "src": "872:7:58", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "840:57:58"}, "src": "814:84:58"}, {"body": null, "documentation": "@dev Transfers ownership of the contract to a new address.\n @param newOwner The address that will become the owner.", "id": 7466, "implemented": false, "kind": "function", "modifiers": [], "name": "transferOwnership", "nodeType": "FunctionDefinition", "parameters": {"id": 7464, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7463, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 7466, "src": "1062:16:58", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7462, "name": "address", "nodeType": "ElementaryTypeName", "src": "1062:7:58", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1061:18:58"}, "returnParameters": {"id": 7465, "nodeType": "ParameterList", "parameters": [], "src": "1094:0:58"}, "scope": 7467, "src": "1035:60:58", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public"}], "scope": 7468, "src": "606:491:58"}], "src": "580:518:58"}, "id": 58}, "contracts/exchange/interfaces/IAssetProxy.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/IAssetProxy.sol", "exportedSymbols": {"IAssetProxy": [7486]}, "id": 7487, "nodeType": "SourceUnit", "nodes": [{"id": 7469, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:59"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7486, "linearizedBaseContracts": [7486], "name": "IAssetProxy", "nodeType": "ContractDefinition", "nodes": [{"body": null, "documentation": "@dev Transfers assets. Either succeeds or throws.\n @param assetData Byte array encoded for the respective asset proxy.\n @param from Address to transfer asset from.\n @param to Address to transfer asset to.\n @param amount Amount of asset to transfer.", "id": 7480, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": {"id": 7478, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7471, "name": "assetData", "nodeType": "VariableDeclaration", "scope": 7480, "src": "950:24:59", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 7470, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "950:5:59", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7473, "name": "from", "nodeType": "VariableDeclaration", "scope": 7480, "src": "984:12:59", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7472, "name": "address", "nodeType": "ElementaryTypeName", "src": "984:7:59", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7475, "name": "to", "nodeType": "VariableDeclaration", "scope": 7480, "src": "1006:10:59", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7474, "name": "address", "nodeType": "ElementaryTypeName", "src": "1006:7:59", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7477, "name": "amount", "nodeType": "VariableDeclaration", "scope": 7480, "src": "1026:14:59", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7476, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1026:7:59", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "940:106:59"}, "returnParameters": {"id": 7479, "nodeType": "ParameterList", "parameters": [], "src": "1063:0:59"}, "scope": 7486, "src": "919:145:59", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Gets the proxy id associated with the proxy address.\n @return Proxy id.", "id": 7485, "implemented": false, "kind": "function", "modifiers": [], "name": "getProxyId", "nodeType": "FunctionDefinition", "parameters": {"id": 7481, "nodeType": "ParameterList", "parameters": [], "src": "1181:2:59"}, "returnParameters": {"id": 7484, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7483, "name": "", "nodeType": "VariableDeclaration", "scope": 7485, "src": "1231:6:59", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 7482, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1231:6:59", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "1230:8:59"}, "scope": 7486, "src": "1162:77:59", "stateMutability": "pure", "superFunction": null, "visibility": "external"}], "scope": 7487, "src": "606:635:59"}], "src": "580:662:59"}, "id": 59}, "contracts/exchange/interfaces/IAssetProxyDispatcher.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/IAssetProxyDispatcher.sol", "exportedSymbols": {"IAssetProxyDispatcher": [7507]}, "id": 7508, "nodeType": "SourceUnit", "nodes": [{"id": 7488, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:60"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7507, "linearizedBaseContracts": [7507], "name": "IAssetProxyDispatcher", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": null, "id": 7494, "name": "AssetProxyRegistered", "nodeType": "EventDefinition", "parameters": {"id": 7493, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7490, "indexed": false, "name": "id", "nodeType": "VariableDeclaration", "scope": 7494, "src": "724:9:60", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 7489, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "724:6:60", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7492, "indexed": false, "name": "assetProxy", "nodeType": "VariableDeclaration", "scope": 7494, "src": "792:18:60", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7491, "name": "address", "nodeType": "ElementaryTypeName", "src": "792:7:60", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "714:148:60"}, "src": "688:175:60"}, {"body": null, "documentation": "@dev Registers an asset proxy to its asset proxy id.\n Once an asset proxy is registered, it cannot be unregistered.\n @param assetProxy Address of new asset proxy to register.", "id": 7499, "implemented": false, "kind": "function", "modifiers": [], "name": "registerAssetProxy", "nodeType": "FunctionDefinition", "parameters": {"id": 7497, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7496, "name": "assetProxy", "nodeType": "VariableDeclaration", "scope": 7499, "src": "1099:18:60", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7495, "name": "address", "nodeType": "ElementaryTypeName", "src": "1099:7:60", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1098:20:60"}, "returnParameters": {"id": 7498, "nodeType": "ParameterList", "parameters": [], "src": "1135:0:60"}, "scope": 7507, "src": "1071:65:60", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Gets an asset proxy.\n @param assetProxyId Id of the asset proxy.\n @return The asset proxy registered to assetProxyId. Returns 0x0 if no proxy is registered.", "id": 7506, "implemented": false, "kind": "function", "modifiers": [], "name": "getAssetProxy", "nodeType": "FunctionDefinition", "parameters": {"id": 7502, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7501, "name": "assetProxyId", "nodeType": "VariableDeclaration", "scope": 7506, "src": "1349:19:60", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 7500, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1349:6:60", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "1348:21:60"}, "returnParameters": {"id": 7505, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7504, "name": "", "nodeType": "VariableDeclaration", "scope": 7506, "src": "1417:7:60", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7503, "name": "address", "nodeType": "ElementaryTypeName", "src": "1417:7:60", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1416:9:60"}, "scope": 7507, "src": "1326:100:60", "stateMutability": "view", "superFunction": null, "visibility": "external"}], "scope": 7508, "src": "606:822:60"}], "src": "580:849:60"}, "id": 60}, "contracts/exchange/interfaces/IEIP1271Data.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/IEIP1271Data.sol", "exportedSymbols": {"IEIP1271Data": [7527]}, "id": 7528, "nodeType": "SourceUnit", "nodes": [{"id": 7509, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:61"}, {"id": 7510, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:61"}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol", "id": 7511, "nodeType": "ImportDirective", "scope": 7528, "sourceUnit": 11029, "src": "639:64:61", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "id": 7512, "nodeType": "ImportDirective", "scope": 7528, "sourceUnit": 11595, "src": "704:76:61", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7527, "linearizedBaseContracts": [7527], "name": "IEIP1271Data", "nodeType": "ContractDefinition", "nodes": [{"body": null, "documentation": "@dev This function's selector is used when ABI encoding the order\n and hash into a byte array before calling `isValidSignature`.\n This function serves no other purpose.", "id": 7519, "implemented": false, "kind": "function", "modifiers": [], "name": "OrderWithHash", "nodeType": "FunctionDefinition", "parameters": {"id": 7517, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7514, "name": "order", "nodeType": "VariableDeclaration", "scope": 7519, "src": "1064:29:61", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_calldata_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 7513, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "1064:14:61", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7516, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 7519, "src": "1103:17:61", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7515, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1103:7:61", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "1054:72:61"}, "returnParameters": {"id": 7518, "nodeType": "ParameterList", "parameters": [], "src": "1156:0:61"}, "scope": 7527, "src": "1032:125:61", "stateMutability": "pure", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev This function's selector is used when ABI encoding the transaction\n and hash into a byte array before calling `isValidSignature`.\n This function serves no other purpose.", "id": 7526, "implemented": false, "kind": "function", "modifiers": [], "name": "ZeroExTransactionWithHash", "nodeType": "FunctionDefinition", "parameters": {"id": 7524, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7521, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 7526, "src": "1418:59:61", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_calldata_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 7520, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "1418:38:61", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7523, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 7526, "src": "1487:23:61", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7522, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1487:7:61", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "1408:108:61"}, "returnParameters": {"id": 7525, "nodeType": "ParameterList", "parameters": [], "src": "1546:0:61"}, "scope": 7527, "src": "1374:173:61", "stateMutability": "pure", "superFunction": null, "visibility": "external"}], "scope": 7528, "src": "802:747:61"}], "src": "580:970:61"}, "id": 61}, "contracts/exchange/interfaces/IEIP1271Wallet.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/IEIP1271Wallet.sol", "exportedSymbols": {"IEIP1271Wallet": [7542]}, "id": 7543, "nodeType": "SourceUnit", "nodes": [{"id": 7529, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:62"}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibEIP1271.sol", "file": "@0x/contracts-utils/contracts/src/LibEIP1271.sol", "id": 7530, "nodeType": "ImportDirective", "scope": 7543, "sourceUnit": 11601, "src": "605:58:62", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 7531, "name": "LibEIP1271", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11600, "src": "697:10:62", "typeDescriptions": {"typeIdentifier": "t_contract$_LibEIP1271_$11600", "typeString": "contract LibEIP1271"}}, "id": 7532, "nodeType": "InheritanceSpecifier", "src": "697:10:62"}], "contractDependencies": [11600], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7542, "linearizedBaseContracts": [7542, 11600], "name": "IEIP1271Wallet", "nodeType": "ContractDefinition", "nodes": [{"body": null, "documentation": "@dev Verifies that a signature is valid.\n @param data Arbitrary signed data.\n @param signature Proof that data has been signed.\n @return magicValue bytes4(0x20c13b0b) if the signature check succeeds.", "id": 7541, "implemented": false, "kind": "function", "modifiers": [], "name": "isValidSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 7537, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7534, "name": "data", "nodeType": "VariableDeclaration", "scope": 7541, "src": "978:19:62", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 7533, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "978:5:62", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7536, "name": "signature", "nodeType": "VariableDeclaration", "scope": 7541, "src": "1007:24:62", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 7535, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1007:5:62", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "968:69:62"}, "returnParameters": {"id": 7540, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7539, "name": "magicValue", "nodeType": "VariableDeclaration", "scope": 7541, "src": "1085:17:62", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 7538, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1085:6:62", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "1084:19:62"}, "scope": 7542, "src": "943:161:62", "stateMutability": "view", "superFunction": null, "visibility": "external"}], "scope": 7543, "src": "666:440:62"}], "src": "580:527:62"}, "id": 62}, "contracts/exchange/interfaces/IExchange.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/IExchange.sol", "exportedSymbols": {"IExchange": [7570]}, "id": 7571, "nodeType": "SourceUnit", "nodes": [{"id": 7544, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:63"}, {"id": 7545, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:63"}, {"absolutePath": "contracts/exchange/interfaces/IExchangeCore.sol", "file": "./IExchangeCore.sol", "id": 7546, "nodeType": "ImportDirective", "scope": 7571, "sourceUnit": 7657, "src": "639:29:63", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IProtocolFees.sol", "file": "./IProtocolFees.sol", "id": 7547, "nodeType": "ImportDirective", "scope": 7571, "sourceUnit": 7758, "src": "669:29:63", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IMatchOrders.sol", "file": "./IMatchOrders.sol", "id": 7548, "nodeType": "ImportDirective", "scope": 7571, "sourceUnit": 7723, "src": "699:28:63", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/ISignatureValidator.sol", "file": "./ISignatureValidator.sol", "id": 7549, "nodeType": "ImportDirective", "scope": 7571, "sourceUnit": 7845, "src": "728:35:63", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/ITransactions.sol", "file": "./ITransactions.sol", "id": 7550, "nodeType": "ImportDirective", "scope": 7571, "sourceUnit": 7880, "src": "764:29:63", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IAssetProxyDispatcher.sol", "file": "./IAssetProxyDispatcher.sol", "id": 7551, "nodeType": "ImportDirective", "scope": 7571, "sourceUnit": 7508, "src": "794:37:63", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/IWrapperFunctions.sol", "file": "./IWrapperFunctions.sol", "id": 7552, "nodeType": "ImportDirective", "scope": 7571, "sourceUnit": 8033, "src": "832:33:63", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/exchange/interfaces/ITransferSimulator.sol", "file": "./ITransferSimulator.sol", "id": 7553, "nodeType": "ImportDirective", "scope": 7571, "sourceUnit": 7899, "src": "866:34:63", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [{"arguments": null, "baseName": {"contractScope": null, "id": 7554, "name": "IProtocolFees", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7757, "src": "964:13:63", "typeDescriptions": {"typeIdentifier": "t_contract$_IProtocolFees_$7757", "typeString": "contract IProtocolFees"}}, "id": 7555, "nodeType": "InheritanceSpecifier", "src": "964:13:63"}, {"arguments": null, "baseName": {"contractScope": null, "id": 7556, "name": "IExchangeCore", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7656, "src": "983:13:63", "typeDescriptions": {"typeIdentifier": "t_contract$_IExchangeCore_$7656", "typeString": "contract IExchangeCore"}}, "id": 7557, "nodeType": "InheritanceSpecifier", "src": "983:13:63"}, {"arguments": null, "baseName": {"contractScope": null, "id": 7558, "name": "IMatchOrders", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7722, "src": "1002:12:63", "typeDescriptions": {"typeIdentifier": "t_contract$_IMatchOrders_$7722", "typeString": "contract IMatchOrders"}}, "id": 7559, "nodeType": "InheritanceSpecifier", "src": "1002:12:63"}, {"arguments": null, "baseName": {"contractScope": null, "id": 7560, "name": "ISignatureValidator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7844, "src": "1020:19:63", "typeDescriptions": {"typeIdentifier": "t_contract$_ISignatureValidator_$7844", "typeString": "contract ISignatureValidator"}}, "id": 7561, "nodeType": "InheritanceSpecifier", "src": "1020:19:63"}, {"arguments": null, "baseName": {"contractScope": null, "id": 7562, "name": "ITransactions", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7879, "src": "1045:13:63", "typeDescriptions": {"typeIdentifier": "t_contract$_ITransactions_$7879", "typeString": "contract ITransactions"}}, "id": 7563, "nodeType": "InheritanceSpecifier", "src": "1045:13:63"}, {"arguments": null, "baseName": {"contractScope": null, "id": 7564, "name": "IAssetProxyDispatcher", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7507, "src": "1064:21:63", "typeDescriptions": {"typeIdentifier": "t_contract$_IAssetProxyDispatcher_$7507", "typeString": "contract IAssetProxyDispatcher"}}, "id": 7565, "nodeType": "InheritanceSpecifier", "src": "1064:21:63"}, {"arguments": null, "baseName": {"contractScope": null, "id": 7566, "name": "ITransferSimulator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 7898, "src": "1091:18:63", "typeDescriptions": {"typeIdentifier": "t_contract$_ITransferSimulator_$7898", "typeString": "contract ITransferSimulator"}}, "id": 7567, "nodeType": "InheritanceSpecifier", "src": "1091:18:63"}, {"arguments": null, "baseName": {"contractScope": null, "id": 7568, "name": "IWrapperFunctions", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8032, "src": "1115:17:63", "typeDescriptions": {"typeIdentifier": "t_contract$_IWrapperFunctions_$8032", "typeString": "contract IWrapperFunctions"}}, "id": 7569, "nodeType": "InheritanceSpecifier", "src": "1115:17:63"}], "contractDependencies": [7507, 7656, 7722, 7757, 7844, 7879, 7898, 8032], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7570, "linearizedBaseContracts": [7570, 8032, 7898, 7507, 7879, 7844, 7722, 7656, 7757], "name": "IExchange", "nodeType": "ContractDefinition", "nodes": [], "scope": 7571, "src": "938:197:63"}], "src": "580:556:63"}, "id": 63}, "contracts/exchange/interfaces/IExchangeCore.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/IExchangeCore.sol", "exportedSymbols": {"IExchangeCore": [7656]}, "id": 7657, "nodeType": "SourceUnit", "nodes": [{"id": 7572, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:64"}, {"id": 7573, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:64"}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol", "id": 7574, "nodeType": "ImportDirective", "scope": 7657, "sourceUnit": 11029, "src": "639:64:64", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibFillResults.sol", "id": 7575, "nodeType": "ImportDirective", "scope": 7657, "sourceUnit": 10640, "src": "704:70:64", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7656, "linearizedBaseContracts": [7656], "name": "IExchangeCore", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": null, "id": 7605, "name": "Fill", "nodeType": "EventDefinition", "parameters": {"id": 7604, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7577, "indexed": true, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 7605, "src": "885:28:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7576, "name": "address", "nodeType": "ElementaryTypeName", "src": "885:7:64", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7579, "indexed": true, "name": "feeRecipientAddress", "nodeType": "VariableDeclaration", "scope": 7605, "src": "966:35:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7578, "name": "address", "nodeType": "ElementaryTypeName", "src": "966:7:64", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7581, "indexed": false, "name": "makerAssetData", "nodeType": "VariableDeclaration", "scope": 7605, "src": "1043:20:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7580, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1043:5:64", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7583, "indexed": false, "name": "takerAssetData", "nodeType": "VariableDeclaration", "scope": 7605, "src": "1129:20:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7582, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1129:5:64", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7585, "indexed": false, "name": "makerFeeAssetData", "nodeType": "VariableDeclaration", "scope": 7605, "src": "1215:23:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7584, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1215:5:64", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7587, "indexed": false, "name": "takerFeeAssetData", "nodeType": "VariableDeclaration", "scope": 7605, "src": "1304:23:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7586, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1304:5:64", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7589, "indexed": true, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 7605, "src": "1393:25:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7588, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1393:7:64", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7591, "indexed": false, "name": "takerAddress", "nodeType": "VariableDeclaration", "scope": 7605, "src": "1496:20:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7590, "name": "address", "nodeType": "ElementaryTypeName", "src": "1496:7:64", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7593, "indexed": false, "name": "senderAddress", "nodeType": "VariableDeclaration", "scope": 7605, "src": "1576:21:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7592, "name": "address", "nodeType": "ElementaryTypeName", "src": "1576:7:64", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7595, "indexed": false, "name": "makerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 7605, "src": "1681:30:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7594, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1681:7:64", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7597, "indexed": false, "name": "takerAssetFilledAmount", "nodeType": "VariableDeclaration", "scope": 7605, "src": "1786:30:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1786:7:64", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7599, "indexed": false, "name": "makerFeePaid", "nodeType": "VariableDeclaration", "scope": 7605, "src": "1891:20:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7598, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1891:7:64", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7601, "indexed": false, "name": "takerFeePaid", "nodeType": "VariableDeclaration", "scope": 7605, "src": "1999:20:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7600, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1999:7:64", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7603, "indexed": false, "name": "protocolFeePaid", "nodeType": "VariableDeclaration", "scope": 7605, "src": "2107:23:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7602, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2107:7:64", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "875:1330:64"}, "src": "865:1341:64"}, {"anonymous": false, "documentation": null, "id": 7619, "name": "Cancel", "nodeType": "EventDefinition", "parameters": {"id": 7618, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7607, "indexed": true, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 7619, "src": "2308:28:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7606, "name": "address", "nodeType": "ElementaryTypeName", "src": "2308:7:64", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7609, "indexed": true, "name": "feeRecipientAddress", "nodeType": "VariableDeclaration", "scope": 7619, "src": "2389:35:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7608, "name": "address", "nodeType": "ElementaryTypeName", "src": "2389:7:64", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7611, "indexed": false, "name": "makerAssetData", "nodeType": "VariableDeclaration", "scope": 7619, "src": "2497:20:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7610, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2497:5:64", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7613, "indexed": false, "name": "takerAssetData", "nodeType": "VariableDeclaration", "scope": 7619, "src": "2583:20:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7612, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2583:5:64", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7615, "indexed": false, "name": "senderAddress", "nodeType": "VariableDeclaration", "scope": 7619, "src": "2669:21:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7614, "name": "address", "nodeType": "ElementaryTypeName", "src": "2669:7:64", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7617, "indexed": true, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 7619, "src": "2774:25:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7616, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2774:7:64", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "2298:576:64"}, "src": "2286:589:64"}, {"anonymous": false, "documentation": null, "id": 7627, "name": "CancelUpTo", "nodeType": "EventDefinition", "parameters": {"id": 7626, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7621, "indexed": true, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 7627, "src": "2995:28:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7620, "name": "address", "nodeType": "ElementaryTypeName", "src": "2995:7:64", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7623, "indexed": true, "name": "orderSenderAddress", "nodeType": "VariableDeclaration", "scope": 7627, "src": "3101:34:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7622, "name": "address", "nodeType": "ElementaryTypeName", "src": "3101:7:64", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7625, "indexed": false, "name": "orderEpoch", "nodeType": "VariableDeclaration", "scope": 7627, "src": "3218:18:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7624, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3218:7:64", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "2985:391:64"}, "src": "2969:408:64"}, {"body": null, "documentation": "@dev Cancels all orders created by makerAddress with a salt less than or equal to the targetOrderEpoch\n and senderAddress equal to msg.sender (or null address if msg.sender == makerAddress).\n @param targetOrderEpoch Orders created with a salt less or equal to this value will be cancelled.", "id": 7632, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelOrdersUpTo", "nodeType": "FunctionDefinition", "parameters": {"id": 7630, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7629, "name": "targetOrderEpoch", "nodeType": "VariableDeclaration", "scope": 7632, "src": "3726:24:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7628, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3726:7:64", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "3725:26:64"}, "returnParameters": {"id": 7631, "nodeType": "ParameterList", "parameters": [], "src": "3784:0:64"}, "scope": 7656, "src": "3700:85:64", "stateMutability": "payable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Fills the input order.\n @param order Order struct containing order specifications.\n @param takerAssetFillAmount Desired amount of takerAsset to sell.\n @param signature Proof that order has been created by maker.\n @return Amounts filled and fees paid by maker and taker.", "id": 7643, "implemented": false, "kind": "function", "modifiers": [], "name": "fillOrder", "nodeType": "FunctionDefinition", "parameters": {"id": 7639, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7634, "name": "order", "nodeType": "VariableDeclaration", "scope": 7643, "src": "4130:27:64", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 7633, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4130:14:64", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7636, "name": "takerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 7643, "src": "4167:28:64", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7635, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4167:7:64", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7638, "name": "signature", "nodeType": "VariableDeclaration", "scope": 7643, "src": "4205:22:64", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7637, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4205:5:64", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "4120:113:64"}, "returnParameters": {"id": 7642, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7641, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 7643, "src": "4282:45:64", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 7640, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "4282:26:64", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "4281:47:64"}, "scope": 7656, "src": "4102:227:64", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev After calling, the order can not be filled anymore.\n @param order Order struct containing order specifications.", "id": 7648, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelOrder", "nodeType": "FunctionDefinition", "parameters": {"id": 7646, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7645, "name": "order", "nodeType": "VariableDeclaration", "scope": 7648, "src": "4488:27:64", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 7644, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4488:14:64", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}], "src": "4487:29:64"}, "returnParameters": {"id": 7647, "nodeType": "ParameterList", "parameters": [], "src": "4547:0:64"}, "scope": 7656, "src": "4467:81:64", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Gets information about an order: status, hash, and amount filled.\n @param order Order to gather information on.\n @return OrderInfo Information about the order and its state.\n See LibOrder.OrderInfo for a complete description.", "id": 7655, "implemented": false, "kind": "function", "modifiers": [], "name": "getOrderInfo", "nodeType": "FunctionDefinition", "parameters": {"id": 7651, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7650, "name": "order", "nodeType": "VariableDeclaration", "scope": 7655, "src": "4854:27:64", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 7649, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4854:14:64", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}], "src": "4853:29:64"}, "returnParameters": {"id": 7654, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7653, "name": "orderInfo", "nodeType": "VariableDeclaration", "scope": 7655, "src": "4928:35:64", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_memory_ptr", "typeString": "struct LibOrder.OrderInfo"}, "typeName": {"contractScope": null, "id": 7652, "name": "LibOrder.OrderInfo", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10970, "src": "4928:18:64", "typeDescriptions": {"typeIdentifier": "t_struct$_OrderInfo_$10970_storage_ptr", "typeString": "struct LibOrder.OrderInfo"}}, "value": null, "visibility": "internal"}], "src": "4927:37:64"}, "scope": 7656, "src": "4832:133:64", "stateMutability": "view", "superFunction": null, "visibility": "public"}], "scope": 7657, "src": "777:4190:64"}], "src": "580:4388:64"}, "id": 64}, "contracts/exchange/interfaces/IMatchOrders.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/IMatchOrders.sol", "exportedSymbols": {"IMatchOrders": [7722]}, "id": 7723, "nodeType": "SourceUnit", "nodes": [{"id": 7658, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:65"}, {"id": 7659, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:65"}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol", "id": 7660, "nodeType": "ImportDirective", "scope": 7723, "sourceUnit": 11029, "src": "639:64:65", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibFillResults.sol", "id": 7661, "nodeType": "ImportDirective", "scope": 7723, "sourceUnit": 10640, "src": "704:70:65", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7722, "linearizedBaseContracts": [7722], "name": "IMatchOrders", "nodeType": "ContractDefinition", "nodes": [{"body": null, "documentation": "@dev Match complementary orders that have a profitable spread.\n Each order is filled at their respective price point, and\n the matcher receives a profit denominated in the left maker asset.\n @param leftOrders Set of orders with the same maker / taker asset.\n @param rightOrders Set of orders to match against `leftOrders`\n @param leftSignatures Proof that left orders were created by the left makers.\n @param rightSignatures Proof that right orders were created by the right makers.\n @return batchMatchedFillResults Amounts filled and profit generated.", "id": 7678, "implemented": false, "kind": "function", "modifiers": [], "name": "batchMatchOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 7674, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7664, "name": "leftOrders", "nodeType": "VariableDeclaration", "scope": 7678, "src": "1461:34:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7662, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "1461:14:65", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 7663, "length": null, "nodeType": "ArrayTypeName", "src": "1461:16:65", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7667, "name": "rightOrders", "nodeType": "VariableDeclaration", "scope": 7678, "src": "1505:35:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7665, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "1505:14:65", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 7666, "length": null, "nodeType": "ArrayTypeName", "src": "1505:16:65", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7670, "name": "leftSignatures", "nodeType": "VariableDeclaration", "scope": 7678, "src": "1550:29:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7668, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1550:5:65", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7669, "length": null, "nodeType": "ArrayTypeName", "src": "1550:7:65", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7673, "name": "rightSignatures", "nodeType": "VariableDeclaration", "scope": 7678, "src": "1589:30:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7671, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1589:5:65", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7672, "length": null, "nodeType": "ArrayTypeName", "src": "1589:7:65", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "1451:174:65"}, "returnParameters": {"id": 7677, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7676, "name": "batchMatchedFillResults", "nodeType": "VariableDeclaration", "scope": 7678, "src": "1674:69:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults"}, "typeName": {"contractScope": null, "id": 7675, "name": "LibFillResults.BatchMatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9972, "src": "1674:38:65", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_storage_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "1673:71:65"}, "scope": 7722, "src": "1426:319:65", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Match complementary orders that have a profitable spread.\n Each order is maximally filled at their respective price point, and\n the matcher receives a profit denominated in either the left maker asset,\n right maker asset, or a combination of both.\n @param leftOrders Set of orders with the same maker / taker asset.\n @param rightOrders Set of orders to match against `leftOrders`\n @param leftSignatures Proof that left orders were created by the left makers.\n @param rightSignatures Proof that right orders were created by the right makers.\n @return batchMatchedFillResults Amounts filled and profit generated.", "id": 7695, "implemented": false, "kind": "function", "modifiers": [], "name": "batchMatchOrdersWithMaximalFill", "nodeType": "FunctionDefinition", "parameters": {"id": 7691, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7681, "name": "leftOrders", "nodeType": "VariableDeclaration", "scope": 7695, "src": "2496:34:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7679, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "2496:14:65", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 7680, "length": null, "nodeType": "ArrayTypeName", "src": "2496:16:65", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7684, "name": "rightOrders", "nodeType": "VariableDeclaration", "scope": 7695, "src": "2540:35:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7682, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "2540:14:65", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 7683, "length": null, "nodeType": "ArrayTypeName", "src": "2540:16:65", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7687, "name": "leftSignatures", "nodeType": "VariableDeclaration", "scope": 7695, "src": "2585:29:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7685, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2585:5:65", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7686, "length": null, "nodeType": "ArrayTypeName", "src": "2585:7:65", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7690, "name": "rightSignatures", "nodeType": "VariableDeclaration", "scope": 7695, "src": "2624:30:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7688, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2624:5:65", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7689, "length": null, "nodeType": "ArrayTypeName", "src": "2624:7:65", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "2486:174:65"}, "returnParameters": {"id": 7694, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7693, "name": "batchMatchedFillResults", "nodeType": "VariableDeclaration", "scope": 7695, "src": "2709:69:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_memory_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults"}, "typeName": {"contractScope": null, "id": 7692, "name": "LibFillResults.BatchMatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9972, "src": "2709:38:65", "typeDescriptions": {"typeIdentifier": "t_struct$_BatchMatchedFillResults_$9972_storage_ptr", "typeString": "struct LibFillResults.BatchMatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "2708:71:65"}, "scope": 7722, "src": "2446:334:65", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Match two complementary orders that have a profitable spread.\n Each order is filled at their respective price point. However, the calculations are\n carried out as though the orders are both being filled at the right order's price point.\n The profit made by the left order goes to the taker (who matched the two orders).\n @param leftOrder First order to match.\n @param rightOrder Second order to match.\n @param leftSignature Proof that order was created by the left maker.\n @param rightSignature Proof that order was created by the right maker.\n @return matchedFillResults Amounts filled and fees paid by maker and taker of matched orders.", "id": 7708, "implemented": false, "kind": "function", "modifiers": [], "name": "matchOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 7704, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7697, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 7708, "src": "3539:31:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 7696, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "3539:14:65", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7699, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 7708, "src": "3580:32:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 7698, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "3580:14:65", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7701, "name": "leftSignature", "nodeType": "VariableDeclaration", "scope": 7708, "src": "3622:26:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7700, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3622:5:65", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7703, "name": "rightSignature", "nodeType": "VariableDeclaration", "scope": 7708, "src": "3658:27:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7702, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3658:5:65", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "3529:162:65"}, "returnParameters": {"id": 7707, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7706, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 7708, "src": "3740:59:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 7705, "name": "LibFillResults.MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "3740:33:65", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "3739:61:65"}, "scope": 7722, "src": "3509:292:65", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Match two complementary orders that have a profitable spread.\n Each order is maximally filled at their respective price point, and\n the matcher receives a profit denominated in either the left maker asset,\n right maker asset, or a combination of both.\n @param leftOrder First order to match.\n @param rightOrder Second order to match.\n @param leftSignature Proof that order was created by the left maker.\n @param rightSignature Proof that order was created by the right maker.\n @return matchedFillResults Amounts filled by maker and taker of matched orders.", "id": 7721, "implemented": false, "kind": "function", "modifiers": [], "name": "matchOrdersWithMaximalFill", "nodeType": "FunctionDefinition", "parameters": {"id": 7717, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7710, "name": "leftOrder", "nodeType": "VariableDeclaration", "scope": 7721, "src": "4493:31:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 7709, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4493:14:65", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7712, "name": "rightOrder", "nodeType": "VariableDeclaration", "scope": 7721, "src": "4534:32:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 7711, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4534:14:65", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7714, "name": "leftSignature", "nodeType": "VariableDeclaration", "scope": 7721, "src": "4576:26:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7713, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4576:5:65", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7716, "name": "rightSignature", "nodeType": "VariableDeclaration", "scope": 7721, "src": "4612:27:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7715, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4612:5:65", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "4483:162:65"}, "returnParameters": {"id": 7720, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7719, "name": "matchedFillResults", "nodeType": "VariableDeclaration", "scope": 7721, "src": "4694:59:65", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_memory_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}, "typeName": {"contractScope": null, "id": 7718, "name": "LibFillResults.MatchedFillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9992, "src": "4694:33:65", "typeDescriptions": {"typeIdentifier": "t_struct$_MatchedFillResults_$9992_storage_ptr", "typeString": "struct LibFillResults.MatchedFillResults"}}, "value": null, "visibility": "internal"}], "src": "4693:61:65"}, "scope": 7722, "src": "4448:307:65", "stateMutability": "payable", "superFunction": null, "visibility": "public"}], "scope": 7723, "src": "777:3980:65"}], "src": "580:4178:65"}, "id": 65}, "contracts/exchange/interfaces/IProtocolFees.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/IProtocolFees.sol", "exportedSymbols": {"IProtocolFees": [7757]}, "id": 7758, "nodeType": "SourceUnit", "nodes": [{"id": 7724, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:66"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7757, "linearizedBaseContracts": [7757], "name": "IProtocolFees", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": null, "id": 7730, "name": "ProtocolFeeMultiplier", "nodeType": "EventDefinition", "parameters": {"id": 7729, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7726, "indexed": false, "name": "oldProtocolFeeMultiplier", "nodeType": "VariableDeclaration", "scope": 7730, "src": "716:32:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7725, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "716:7:66", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7728, "indexed": false, "name": "updatedProtocolFeeMultiplier", "nodeType": "VariableDeclaration", "scope": 7730, "src": "750:36:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7727, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "750:7:66", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "715:72:66"}, "src": "688:100:66"}, {"anonymous": false, "documentation": null, "id": 7736, "name": "ProtocolFeeCollectorAddress", "nodeType": "EventDefinition", "parameters": {"id": 7735, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7732, "indexed": false, "name": "oldProtocolFeeCollector", "nodeType": "VariableDeclaration", "scope": 7736, "src": "885:31:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7731, "name": "address", "nodeType": "ElementaryTypeName", "src": "885:7:66", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7734, "indexed": false, "name": "updatedProtocolFeeCollector", "nodeType": "VariableDeclaration", "scope": 7736, "src": "918:35:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7733, "name": "address", "nodeType": "ElementaryTypeName", "src": "918:7:66", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "884:70:66"}, "src": "851:104:66"}, {"body": null, "documentation": "@dev Allows the owner to update the protocol fee multiplier.\n @param updatedProtocolFeeMultiplier The updated protocol fee multiplier.", "id": 7741, "implemented": false, "kind": "function", "modifiers": [], "name": "setProtocolFeeMultiplier", "nodeType": "FunctionDefinition", "parameters": {"id": 7739, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7738, "name": "updatedProtocolFeeMultiplier", "nodeType": "VariableDeclaration", "scope": 7741, "src": "1145:36:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7737, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1145:7:66", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1144:38:66"}, "returnParameters": {"id": 7740, "nodeType": "ParameterList", "parameters": [], "src": "1199:0:66"}, "scope": 7757, "src": "1111:89:66", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Allows the owner to update the protocolFeeCollector address.\n @param updatedProtocolFeeCollector The updated protocolFeeCollector contract address.", "id": 7746, "implemented": false, "kind": "function", "modifiers": [], "name": "setProtocolFeeCollectorAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 7744, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7743, "name": "updatedProtocolFeeCollector", "nodeType": "VariableDeclaration", "scope": 7746, "src": "1414:35:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7742, "name": "address", "nodeType": "ElementaryTypeName", "src": "1414:7:66", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1413:37:66"}, "returnParameters": {"id": 7745, "nodeType": "ParameterList", "parameters": [], "src": "1467:0:66"}, "scope": 7757, "src": "1374:94:66", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns the protocolFeeMultiplier", "id": 7751, "implemented": false, "kind": "function", "modifiers": [], "name": "protocolFeeMultiplier", "nodeType": "FunctionDefinition", "parameters": {"id": 7747, "nodeType": "ParameterList", "parameters": [], "src": "1551:2:66"}, "returnParameters": {"id": 7750, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7749, "name": "", "nodeType": "VariableDeclaration", "scope": 7751, "src": "1601:7:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7748, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1601:7:66", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "1600:9:66"}, "scope": 7757, "src": "1521:89:66", "stateMutability": "view", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Returns the protocolFeeCollector address", "id": 7756, "implemented": false, "kind": "function", "modifiers": [], "name": "protocolFeeCollector", "nodeType": "FunctionDefinition", "parameters": {"id": 7752, "nodeType": "ParameterList", "parameters": [], "src": "1699:2:66"}, "returnParameters": {"id": 7755, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7754, "name": "", "nodeType": "VariableDeclaration", "scope": 7756, "src": "1749:7:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7753, "name": "address", "nodeType": "ElementaryTypeName", "src": "1749:7:66", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "1748:9:66"}, "scope": 7757, "src": "1670:88:66", "stateMutability": "view", "superFunction": null, "visibility": "external"}], "scope": 7758, "src": "606:1154:66"}], "src": "580:1181:66"}, "id": 66}, "contracts/exchange/interfaces/ISignatureValidator.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/ISignatureValidator.sol", "exportedSymbols": {"ISignatureValidator": [7844]}, "id": 7845, "nodeType": "SourceUnit", "nodes": [{"id": 7759, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:67"}, {"id": 7760, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:67"}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol", "id": 7761, "nodeType": "ImportDirective", "scope": 7845, "sourceUnit": 11029, "src": "639:64:67", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "id": 7762, "nodeType": "ImportDirective", "scope": 7845, "sourceUnit": 11595, "src": "704:76:67", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7844, "linearizedBaseContracts": [7844], "name": "ISignatureValidator", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISignatureValidator.SignatureType", "id": 7772, "members": [{"id": 7763, "name": "Illegal", "nodeType": "EnumValue", "src": "879:7:67"}, {"id": 7764, "name": "Invalid", "nodeType": "EnumValue", "src": "939:7:67"}, {"id": 7765, "name": "EIP712", "nodeType": "EnumValue", "src": "984:6:67"}, {"id": 7766, "name": "EthSign", "nodeType": "EnumValue", "src": "1029:7:67"}, {"id": 7767, "name": "Wallet", "nodeType": "EnumValue", "src": "1074:6:67"}, {"id": 7768, "name": "Validator", "nodeType": "EnumValue", "src": "1119:9:67"}, {"id": 7769, "name": "PreSigned", "nodeType": "EnumValue", "src": "1164:9:67"}, {"id": 7770, "name": "EIP1271Wallet", "nodeType": "EnumValue", "src": "1209:13:67"}, {"id": 7771, "name": "NSignatureTypes", "nodeType": "EnumValue", "src": "1254:15:67"}], "name": "SignatureType", "nodeType": "EnumDefinition", "src": "850:495:67"}, {"anonymous": false, "documentation": null, "id": 7780, "name": "SignatureValidatorApproval", "nodeType": "EventDefinition", "parameters": {"id": 7779, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7774, "indexed": true, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 7780, "src": "1393:29:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7773, "name": "address", "nodeType": "ElementaryTypeName", "src": "1393:7:67", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7776, "indexed": true, "name": "validatorAddress", "nodeType": "VariableDeclaration", "scope": 7780, "src": "1509:32:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7775, "name": "address", "nodeType": "ElementaryTypeName", "src": "1509:7:67", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7778, "indexed": false, "name": "isApproved", "nodeType": "VariableDeclaration", "scope": 7780, "src": "1596:15:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7777, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1596:4:67", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "1383:303:67"}, "src": "1351:336:67"}, {"body": null, "documentation": "@dev Approves a hash on-chain.\n After presigning a hash, the preSign signature type will become valid for that hash and signer.\n @param hash Any 32-byte hash.", "id": 7785, "implemented": false, "kind": "function", "modifiers": [], "name": "preSign", "nodeType": "FunctionDefinition", "parameters": {"id": 7783, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7782, "name": "hash", "nodeType": "VariableDeclaration", "scope": 7785, "src": "1896:12:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7781, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1896:7:67", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "1895:14:67"}, "returnParameters": {"id": 7784, "nodeType": "ParameterList", "parameters": [], "src": "1942:0:67"}, "scope": 7844, "src": "1879:64:67", "stateMutability": "payable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Approves/unnapproves a Validator contract to verify signatures on signer's behalf.\n @param validatorAddress Address of Validator contract.\n @param approval Approval or disapproval of Validator contract.", "id": 7792, "implemented": false, "kind": "function", "modifiers": [], "name": "setSignatureValidatorApproval", "nodeType": "FunctionDefinition", "parameters": {"id": 7790, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7787, "name": "validatorAddress", "nodeType": "VariableDeclaration", "scope": 7792, "src": "2228:24:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7786, "name": "address", "nodeType": "ElementaryTypeName", "src": "2228:7:67", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7789, "name": "approval", "nodeType": "VariableDeclaration", "scope": 7792, "src": "2262:13:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7788, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2262:4:67", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "2218:63:67"}, "returnParameters": {"id": 7791, "nodeType": "ParameterList", "parameters": [], "src": "2314:0:67"}, "scope": 7844, "src": "2180:135:67", "stateMutability": "payable", "superFunction": null, "visibility": "external"}, {"body": null, "documentation": "@dev Verifies that a hash has been signed by the given signer.\n @param hash Any 32-byte hash.\n @param signature Proof that the hash has been signed by signer.\n @return isValid `true` if the signature is valid for the given hash and signer.", "id": 7803, "implemented": false, "kind": "function", "modifiers": [], "name": "isValidHashSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 7799, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7794, "name": "hash", "nodeType": "VariableDeclaration", "scope": 7803, "src": "2629:12:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7793, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2629:7:67", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7796, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 7803, "src": "2651:21:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7795, "name": "address", "nodeType": "ElementaryTypeName", "src": "2651:7:67", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7798, "name": "signature", "nodeType": "VariableDeclaration", "scope": 7803, "src": "2682:22:67", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7797, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2682:5:67", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "2619:91:67"}, "returnParameters": {"id": 7802, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7801, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 7803, "src": "2756:12:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7800, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2756:4:67", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "2755:14:67"}, "scope": 7844, "src": "2590:180:67", "stateMutability": "view", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Verifies that a signature for an order is valid.\n @param order The order.\n @param signature Proof that the order has been signed by signer.\n @return isValid true if the signature is valid for the given order and signer.", "id": 7812, "implemented": false, "kind": "function", "modifiers": [], "name": "isValidOrderSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 7808, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7805, "name": "order", "nodeType": "VariableDeclaration", "scope": 7812, "src": "3070:27:67", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 7804, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "3070:14:67", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7807, "name": "signature", "nodeType": "VariableDeclaration", "scope": 7812, "src": "3107:22:67", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7806, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3107:5:67", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "3060:75:67"}, "returnParameters": {"id": 7811, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7810, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 7812, "src": "3181:12:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7809, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3181:4:67", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "3180:14:67"}, "scope": 7844, "src": "3030:165:67", "stateMutability": "view", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Verifies that a signature for a transaction is valid.\n @param transaction The transaction.\n @param signature Proof that the order has been signed by signer.\n @return isValid true if the signature is valid for the given transaction and signer.", "id": 7821, "implemented": false, "kind": "function", "modifiers": [], "name": "isValidTransactionSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 7817, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7814, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 7821, "src": "3524:57:67", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 7813, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "3524:38:67", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7816, "name": "signature", "nodeType": "VariableDeclaration", "scope": 7821, "src": "3591:22:67", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7815, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3591:5:67", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "3514:105:67"}, "returnParameters": {"id": 7820, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7819, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 7821, "src": "3665:12:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7818, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3665:4:67", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "3664:14:67"}, "scope": 7844, "src": "3478:201:67", "stateMutability": "view", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Verifies that an order, with provided order hash, has been signed\n by the given signer.\n @param order The order.\n @param orderHash The hash of the order.\n @param signature Proof that the hash has been signed by signer.\n @return isValid True if the signature is valid for the given order and signer.", "id": 7832, "implemented": false, "kind": "function", "modifiers": [], "name": "_isValidOrderWithHashSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 7828, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7823, "name": "order", "nodeType": "VariableDeclaration", "scope": 7832, "src": "4086:27:67", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 7822, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4086:14:67", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7825, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 7832, "src": "4123:17:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7824, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4123:7:67", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7827, "name": "signature", "nodeType": "VariableDeclaration", "scope": 7832, "src": "4150:22:67", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7826, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4150:5:67", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "4076:102:67"}, "returnParameters": {"id": 7831, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7830, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 7832, "src": "4226:12:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7829, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4226:4:67", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "4225:14:67"}, "scope": 7844, "src": "4037:203:67", "stateMutability": "view", "superFunction": null, "visibility": "internal"}, {"body": null, "documentation": "@dev Verifies that a transaction, with provided order hash, has been signed\n by the given signer.\n @param transaction The transaction.\n @param transactionHash The hash of the transaction.\n @param signature Proof that the hash has been signed by signer.\n @return isValid True if the signature is valid for the given transaction and signer.", "id": 7843, "implemented": false, "kind": "function", "modifiers": [], "name": "_isValidTransactionWithHashSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 7839, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7834, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 7843, "src": "4688:57:67", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 7833, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "4688:38:67", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7836, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 7843, "src": "4755:23:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7835, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4755:7:67", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7838, "name": "signature", "nodeType": "VariableDeclaration", "scope": 7843, "src": "4788:22:67", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7837, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4788:5:67", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "4678:138:67"}, "returnParameters": {"id": 7842, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7841, "name": "isValid", "nodeType": "VariableDeclaration", "scope": 7843, "src": "4864:12:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7840, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4864:4:67", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "value": null, "visibility": "internal"}], "src": "4863:14:67"}, "scope": 7844, "src": "4633:245:67", "stateMutability": "view", "superFunction": null, "visibility": "internal"}], "scope": 7845, "src": "783:4097:67"}], "src": "580:4301:67"}, "id": 67}, "contracts/exchange/interfaces/ITransactions.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/ITransactions.sol", "exportedSymbols": {"ITransactions": [7879]}, "id": 7880, "nodeType": "SourceUnit", "nodes": [{"id": 7846, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:68"}, {"id": 7847, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:68"}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibZeroExTransaction.sol", "id": 7848, "nodeType": "ImportDirective", "scope": 7880, "sourceUnit": 11595, "src": "639:76:68", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7879, "linearizedBaseContracts": [7879], "name": "ITransactions", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": null, "id": 7852, "name": "TransactionExecution", "nodeType": "EventDefinition", "parameters": {"id": 7851, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7850, "indexed": true, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 7852, "src": "858:31:68", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7849, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "858:7:68", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "857:33:68"}, "src": "831:60:68"}, {"body": null, "documentation": "@dev Executes an Exchange method call in the context of signer.\n @param transaction 0x transaction containing salt, signerAddress, and data.\n @param signature Proof that transaction has been signed by signer.\n @return ABI encoded return data of the underlying Exchange function call.", "id": 7861, "implemented": false, "kind": "function", "modifiers": [], "name": "executeTransaction", "nodeType": "FunctionDefinition", "parameters": {"id": 7857, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7854, "name": "transaction", "nodeType": "VariableDeclaration", "scope": 7861, "src": "1247:57:68", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}, "typeName": {"contractScope": null, "id": 7853, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "1247:38:68", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7856, "name": "signature", "nodeType": "VariableDeclaration", "scope": 7861, "src": "1314:22:68", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7855, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1314:5:68", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1237:105:68"}, "returnParameters": {"id": 7860, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7859, "name": "", "nodeType": "VariableDeclaration", "scope": 7861, "src": "1391:12:68", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7858, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1391:5:68", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1390:14:68"}, "scope": 7879, "src": "1210:195:68", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Executes a batch of Exchange method calls in the context of signer(s).\n @param transactions Array of 0x transactions containing salt, signerAddress, and data.\n @param signatures Array of proofs that transactions have been signed by signer(s).\n @return Array containing ABI encoded return data for each of the underlying Exchange function calls.", "id": 7873, "implemented": false, "kind": "function", "modifiers": [], "name": "batchExecuteTransactions", "nodeType": "FunctionDefinition", "parameters": {"id": 7868, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7864, "name": "transactions", "nodeType": "VariableDeclaration", "scope": 7873, "src": "1833:60:68", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_ZeroExTransaction_$11531_memory_$dyn_memory_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7862, "name": "LibZeroExTransaction.ZeroExTransaction", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11531, "src": "1833:38:68", "typeDescriptions": {"typeIdentifier": "t_struct$_ZeroExTransaction_$11531_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction"}}, "id": 7863, "length": null, "nodeType": "ArrayTypeName", "src": "1833:40:68", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_ZeroExTransaction_$11531_storage_$dyn_storage_ptr", "typeString": "struct LibZeroExTransaction.ZeroExTransaction[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7867, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 7873, "src": "1903:25:68", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7865, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1903:5:68", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7866, "length": null, "nodeType": "ArrayTypeName", "src": "1903:7:68", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "1823:111:68"}, "returnParameters": {"id": 7872, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7871, "name": "", "nodeType": "VariableDeclaration", "scope": 7873, "src": "1983:14:68", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7869, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1983:5:68", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7870, "length": null, "nodeType": "ArrayTypeName", "src": "1983:7:68", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "1982:16:68"}, "scope": 7879, "src": "1790:209:68", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev The current function will be called in the context of this address (either 0x transaction signer or `msg.sender`).\n If calling a fill function, this address will represent the taker.\n If calling a cancel function, this address will represent the maker.\n @return Signer of 0x transaction if entry point is `executeTransaction`.\n `msg.sender` if entry point is any other function.", "id": 7878, "implemented": false, "kind": "function", "modifiers": [], "name": "_getCurrentContextAddress", "nodeType": "FunctionDefinition", "parameters": {"id": 7874, "nodeType": "ParameterList", "parameters": [], "src": "2477:2:68"}, "returnParameters": {"id": 7877, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7876, "name": "", "nodeType": "VariableDeclaration", "scope": 7878, "src": "2527:7:68", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7875, "name": "address", "nodeType": "ElementaryTypeName", "src": "2527:7:68", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "2526:9:68"}, "scope": 7879, "src": "2443:93:68", "stateMutability": "view", "superFunction": null, "visibility": "internal"}], "scope": 7880, "src": "718:1820:68"}], "src": "580:1959:68"}, "id": 68}, "contracts/exchange/interfaces/ITransferSimulator.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/ITransferSimulator.sol", "exportedSymbols": {"ITransferSimulator": [7898]}, "id": 7899, "nodeType": "SourceUnit", "nodes": [{"id": 7881, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:69"}, {"id": 7882, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:69"}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7898, "linearizedBaseContracts": [7898], "name": "ITransferSimulator", "nodeType": "ContractDefinition", "nodes": [{"body": null, "documentation": "@dev This function may be used to simulate any amount of transfers\n As they would occur through the Exchange contract. Note that this function\n will always revert, even if all transfers are successful. However, it may\n be used with eth_call or with a try/catch pattern in order to simulate\n the results of the transfers.\n @param assetData Array of asset details, each encoded per the AssetProxy contract specification.\n @param fromAddresses Array containing the `from` addresses that correspond with each transfer.\n @param toAddresses Array containing the `to` addresses that correspond with each transfer.\n @param amounts Array containing the amounts that correspond to each transfer.\n @return This function does not return a value. However, it will always revert with\n `Error(\"TRANSFERS_SUCCESSFUL\")` if all of the transfers were successful.", "id": 7897, "implemented": false, "kind": "function", "modifiers": [], "name": "simulateDispatchTransferFromCalls", "nodeType": "FunctionDefinition", "parameters": {"id": 7895, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7885, "name": "assetData", "nodeType": "VariableDeclaration", "scope": 7897, "src": "1649:24:69", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7883, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1649:5:69", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7884, "length": null, "nodeType": "ArrayTypeName", "src": "1649:7:69", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7888, "name": "fromAddresses", "nodeType": "VariableDeclaration", "scope": 7897, "src": "1683:30:69", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7886, "name": "address", "nodeType": "ElementaryTypeName", "src": "1683:7:69", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7887, "length": null, "nodeType": "ArrayTypeName", "src": "1683:9:69", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7891, "name": "toAddresses", "nodeType": "VariableDeclaration", "scope": 7897, "src": "1723:28:69", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7889, "name": "address", "nodeType": "ElementaryTypeName", "src": "1723:7:69", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7890, "length": null, "nodeType": "ArrayTypeName", "src": "1723:9:69", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7894, "name": "amounts", "nodeType": "VariableDeclaration", "scope": 7897, "src": "1761:24:69", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 7892, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1761:7:69", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7893, "length": null, "nodeType": "ArrayTypeName", "src": "1761:9:69", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "value": null, "visibility": "internal"}], "src": "1639:152:69"}, "returnParameters": {"id": 7896, "nodeType": "ParameterList", "parameters": [], "src": "1806:0:69"}, "scope": 7898, "src": "1597:210:69", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public"}], "scope": 7899, "src": "640:1169:69"}], "src": "580:1230:69"}, "id": 69}, "contracts/exchange/interfaces/IWallet.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/IWallet.sol", "exportedSymbols": {"IWallet": [7912]}, "id": 7913, "nodeType": "SourceUnit", "nodes": [{"id": 7900, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:70"}, {"id": 7901, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:70"}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol", "id": 7902, "nodeType": "ImportDirective", "scope": 7913, "sourceUnit": 11029, "src": "639:64:70", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 7912, "linearizedBaseContracts": [7912], "name": "IWallet", "nodeType": "ContractDefinition", "nodes": [{"body": null, "documentation": "@dev Validates a hash with the `Wallet` signature type.\n @param hash Message hash that is signed.\n @param signature Proof of signing.\n @return magicValue `bytes4(0xb0671381)` if the signature check succeeds.", "id": 7911, "implemented": false, "kind": "function", "modifiers": [], "name": "isValidSignature", "nodeType": "FunctionDefinition", "parameters": {"id": 7907, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7904, "name": "hash", "nodeType": "VariableDeclaration", "scope": 7911, "src": "1002:12:70", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7903, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1002:7:70", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7906, "name": "signature", "nodeType": "VariableDeclaration", "scope": 7911, "src": "1024:24:70", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 7905, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1024:5:70", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "992:62:70"}, "returnParameters": {"id": 7910, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7909, "name": "magicValue", "nodeType": "VariableDeclaration", "scope": 7911, "src": "1102:17:70", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 7908, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1102:6:70", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "1101:19:70"}, "scope": 7912, "src": "967:154:70", "stateMutability": "view", "superFunction": null, "visibility": "external"}], "scope": 7913, "src": "706:417:70"}], "src": "580:544:70"}, "id": 70}, "contracts/exchange/interfaces/IWrapperFunctions.sol": {"ast": {"absolutePath": "contracts/exchange/interfaces/IWrapperFunctions.sol", "exportedSymbols": {"IWrapperFunctions": [8032]}, "id": 8033, "nodeType": "SourceUnit", "nodes": [{"id": 7914, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:71"}, {"id": 7915, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "604:33:71"}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol", "id": 7916, "nodeType": "ImportDirective", "scope": 8033, "sourceUnit": 11029, "src": "639:64:71", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibFillResults.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibFillResults.sol", "id": 7917, "nodeType": "ImportDirective", "scope": 8033, "sourceUnit": 10640, "src": "704:70:71", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "id": 8032, "linearizedBaseContracts": [8032], "name": "IWrapperFunctions", "nodeType": "ContractDefinition", "nodes": [{"body": null, "documentation": "@dev Fills the input order. Reverts if exact takerAssetFillAmount not filled.\n @param order Order struct containing order specifications.\n @param takerAssetFillAmount Desired amount of takerAsset to sell.\n @param signature Proof that order has been created by maker.", "id": 7928, "implemented": false, "kind": "function", "modifiers": [], "name": "fillOrKillOrder", "nodeType": "FunctionDefinition", "parameters": {"id": 7924, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7919, "name": "order", "nodeType": "VariableDeclaration", "scope": 7928, "src": "1141:27:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_memory_ptr", "typeString": "struct LibOrder.Order"}, "typeName": {"contractScope": null, "id": 7918, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "1141:14:71", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7921, "name": "takerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 7928, "src": "1178:28:71", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7920, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1178:7:71", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7923, "name": "signature", "nodeType": "VariableDeclaration", "scope": 7928, "src": "1216:22:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 7922, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1216:5:71", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1131:113:71"}, "returnParameters": {"id": 7927, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7926, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 7928, "src": "1293:45:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 7925, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "1293:26:71", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "1292:47:71"}, "scope": 8032, "src": "1107:233:71", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Executes multiple calls of fillOrder.\n @param orders Array of order specifications.\n @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell in orders.\n @param signatures Proofs that orders have been created by makers.\n @return Array of amounts filled and fees paid by makers and taker.", "id": 7943, "implemented": false, "kind": "function", "modifiers": [], "name": "batchFillOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 7938, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7931, "name": "orders", "nodeType": "VariableDeclaration", "scope": 7943, "src": "1728:30:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7929, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "1728:14:71", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 7930, "length": null, "nodeType": "ArrayTypeName", "src": "1728:16:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7934, "name": "takerAssetFillAmounts", "nodeType": "VariableDeclaration", "scope": 7943, "src": "1768:38:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 7932, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1768:7:71", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7933, "length": null, "nodeType": "ArrayTypeName", "src": "1768:9:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7937, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 7943, "src": "1816:25:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7935, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1816:5:71", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7936, "length": null, "nodeType": "ArrayTypeName", "src": "1816:7:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "1718:129:71"}, "returnParameters": {"id": 7942, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7941, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 7943, "src": "1896:47:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7939, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "1896:26:71", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 7940, "length": null, "nodeType": "ArrayTypeName", "src": "1896:28:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}, "value": null, "visibility": "internal"}], "src": "1895:49:71"}, "scope": 8032, "src": "1694:251:71", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Executes multiple calls of fillOrKillOrder.\n @param orders Array of order specifications.\n @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell in orders.\n @param signatures Proofs that orders have been created by makers.\n @return Array of amounts filled and fees paid by makers and taker.", "id": 7958, "implemented": false, "kind": "function", "modifiers": [], "name": "batchFillOrKillOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 7953, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7946, "name": "orders", "nodeType": "VariableDeclaration", "scope": 7958, "src": "2345:30:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7944, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "2345:14:71", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 7945, "length": null, "nodeType": "ArrayTypeName", "src": "2345:16:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7949, "name": "takerAssetFillAmounts", "nodeType": "VariableDeclaration", "scope": 7958, "src": "2385:38:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 7947, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2385:7:71", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7948, "length": null, "nodeType": "ArrayTypeName", "src": "2385:9:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7952, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 7958, "src": "2433:25:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7950, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2433:5:71", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7951, "length": null, "nodeType": "ArrayTypeName", "src": "2433:7:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "2335:129:71"}, "returnParameters": {"id": 7957, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7956, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 7958, "src": "2513:47:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7954, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "2513:26:71", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 7955, "length": null, "nodeType": "ArrayTypeName", "src": "2513:28:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}, "value": null, "visibility": "internal"}], "src": "2512:49:71"}, "scope": 8032, "src": "2305:257:71", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Executes multiple calls of fillOrder. If any fill reverts, the error is caught and ignored.\n @param orders Array of order specifications.\n @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell in orders.\n @param signatures Proofs that orders have been created by makers.\n @return Array of amounts filled and fees paid by makers and taker.", "id": 7973, "implemented": false, "kind": "function", "modifiers": [], "name": "batchFillOrdersNoThrow", "nodeType": "FunctionDefinition", "parameters": {"id": 7968, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7961, "name": "orders", "nodeType": "VariableDeclaration", "scope": 7973, "src": "3011:30:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7959, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "3011:14:71", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 7960, "length": null, "nodeType": "ArrayTypeName", "src": "3011:16:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7964, "name": "takerAssetFillAmounts", "nodeType": "VariableDeclaration", "scope": 7973, "src": "3051:38:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 7962, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3051:7:71", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7963, "length": null, "nodeType": "ArrayTypeName", "src": "3051:9:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7967, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 7973, "src": "3099:25:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7965, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3099:5:71", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7966, "length": null, "nodeType": "ArrayTypeName", "src": "3099:7:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "3001:129:71"}, "returnParameters": {"id": 7972, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7971, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 7973, "src": "3179:47:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_memory_$dyn_memory_ptr", "typeString": "struct LibFillResults.FillResults[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7969, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "3179:26:71", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "id": 7970, "length": null, "nodeType": "ArrayTypeName", "src": "3179:28:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_FillResults_$9983_storage_$dyn_storage_ptr", "typeString": "struct LibFillResults.FillResults[]"}}, "value": null, "visibility": "internal"}], "src": "3178:49:71"}, "scope": 8032, "src": "2970:258:71", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Executes multiple calls of fillOrder until total amount of takerAsset is sold by taker.\n If any fill reverts, the error is caught and ignored.\n NOTE: This function does not enforce that the takerAsset is the same for each order.\n @param orders Array of order specifications.\n @param takerAssetFillAmount Desired amount of takerAsset to sell.\n @param signatures Proofs that orders have been signed by makers.\n @return Amounts filled and fees paid by makers and taker.", "id": 7986, "implemented": false, "kind": "function", "modifiers": [], "name": "marketSellOrdersNoThrow", "nodeType": "FunctionDefinition", "parameters": {"id": 7982, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7976, "name": "orders", "nodeType": "VariableDeclaration", "scope": 7986, "src": "3808:30:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7974, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "3808:14:71", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 7975, "length": null, "nodeType": "ArrayTypeName", "src": "3808:16:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7978, "name": "takerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 7986, "src": "3848:28:71", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7977, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3848:7:71", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7981, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 7986, "src": "3886:25:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7979, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3886:5:71", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7980, "length": null, "nodeType": "ArrayTypeName", "src": "3886:7:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "3798:119:71"}, "returnParameters": {"id": 7985, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7984, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 7986, "src": "3966:45:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 7983, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "3966:26:71", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "3965:47:71"}, "scope": 8032, "src": "3766:247:71", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Executes multiple calls of fillOrder until total amount of makerAsset is bought by taker.\n If any fill reverts, the error is caught and ignored.\n NOTE: This function does not enforce that the makerAsset is the same for each order.\n @param orders Array of order specifications.\n @param makerAssetFillAmount Desired amount of makerAsset to buy.\n @param signatures Proofs that orders have been signed by makers.\n @return Amounts filled and fees paid by makers and taker.", "id": 7999, "implemented": false, "kind": "function", "modifiers": [], "name": "marketBuyOrdersNoThrow", "nodeType": "FunctionDefinition", "parameters": {"id": 7995, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7989, "name": "orders", "nodeType": "VariableDeclaration", "scope": 7999, "src": "4593:30:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 7987, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "4593:14:71", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 7988, "length": null, "nodeType": "ArrayTypeName", "src": "4593:16:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7991, "name": "makerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 7999, "src": "4633:28:71", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7990, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4633:7:71", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 7994, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 7999, "src": "4671:25:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 7992, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4671:5:71", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 7993, "length": null, "nodeType": "ArrayTypeName", "src": "4671:7:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "4583:119:71"}, "returnParameters": {"id": 7998, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7997, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 7999, "src": "4751:45:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 7996, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "4751:26:71", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "4750:47:71"}, "scope": 8032, "src": "4552:246:71", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Calls marketSellOrdersNoThrow then reverts if < takerAssetFillAmount has been sold.\n NOTE: This function does not enforce that the takerAsset is the same for each order.\n @param orders Array of order specifications.\n @param takerAssetFillAmount Minimum amount of takerAsset to sell.\n @param signatures Proofs that orders have been signed by makers.\n @return Amounts filled and fees paid by makers and taker.", "id": 8012, "implemented": false, "kind": "function", "modifiers": [], "name": "marketSellOrdersFillOrKill", "nodeType": "FunctionDefinition", "parameters": {"id": 8008, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8002, "name": "orders", "nodeType": "VariableDeclaration", "scope": 8012, "src": "5310:30:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 8000, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "5310:14:71", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 8001, "length": null, "nodeType": "ArrayTypeName", "src": "5310:16:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8004, "name": "takerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 8012, "src": "5350:28:71", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8003, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5350:7:71", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8007, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 8012, "src": "5388:25:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 8005, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5388:5:71", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 8006, "length": null, "nodeType": "ArrayTypeName", "src": "5388:7:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "5300:119:71"}, "returnParameters": {"id": 8011, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8010, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 8012, "src": "5468:45:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 8009, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "5468:26:71", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "5467:47:71"}, "scope": 8032, "src": "5265:250:71", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Calls marketBuyOrdersNoThrow then reverts if < makerAssetFillAmount has been bought.\n NOTE: This function does not enforce that the makerAsset is the same for each order.\n @param orders Array of order specifications.\n @param makerAssetFillAmount Minimum amount of makerAsset to buy.\n @param signatures Proofs that orders have been signed by makers.\n @return Amounts filled and fees paid by makers and taker.", "id": 8025, "implemented": false, "kind": "function", "modifiers": [], "name": "marketBuyOrdersFillOrKill", "nodeType": "FunctionDefinition", "parameters": {"id": 8021, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8015, "name": "orders", "nodeType": "VariableDeclaration", "scope": 8025, "src": "6026:30:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 8013, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "6026:14:71", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 8014, "length": null, "nodeType": "ArrayTypeName", "src": "6026:16:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8017, "name": "makerAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 8025, "src": "6066:28:71", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8016, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6066:7:71", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8020, "name": "signatures", "nodeType": "VariableDeclaration", "scope": 8025, "src": "6104:25:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 8018, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6104:5:71", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 8019, "length": null, "nodeType": "ArrayTypeName", "src": "6104:7:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "value": null, "visibility": "internal"}], "src": "6016:119:71"}, "returnParameters": {"id": 8024, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8023, "name": "fillResults", "nodeType": "VariableDeclaration", "scope": 8025, "src": "6184:45:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_memory_ptr", "typeString": "struct LibFillResults.FillResults"}, "typeName": {"contractScope": null, "id": 8022, "name": "LibFillResults.FillResults", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9983, "src": "6184:26:71", "typeDescriptions": {"typeIdentifier": "t_struct$_FillResults_$9983_storage_ptr", "typeString": "struct LibFillResults.FillResults"}}, "value": null, "visibility": "internal"}], "src": "6183:47:71"}, "scope": 8032, "src": "5982:249:71", "stateMutability": "payable", "superFunction": null, "visibility": "public"}, {"body": null, "documentation": "@dev Executes multiple calls of cancelOrder.\n @param orders Array of order specifications.", "id": 8031, "implemented": false, "kind": "function", "modifiers": [], "name": "batchCancelOrders", "nodeType": "FunctionDefinition", "parameters": {"id": 8029, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8028, "name": "orders", "nodeType": "VariableDeclaration", "scope": 8031, "src": "6370:30:71", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_memory_$dyn_memory_ptr", "typeString": "struct LibOrder.Order[]"}, "typeName": {"baseType": {"contractScope": null, "id": 8026, "name": "LibOrder.Order", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10963, "src": "6370:14:71", "typeDescriptions": {"typeIdentifier": "t_struct$_Order_$10963_storage_ptr", "typeString": "struct LibOrder.Order"}}, "id": 8027, "length": null, "nodeType": "ArrayTypeName", "src": "6370:16:71", "typeDescriptions": {"typeIdentifier": "t_array$_t_struct$_Order_$10963_storage_$dyn_storage_ptr", "typeString": "struct LibOrder.Order[]"}}, "value": null, "visibility": "internal"}], "src": "6369:32:71"}, "returnParameters": {"id": 8030, "nodeType": "ParameterList", "parameters": [], "src": "6432:0:71"}, "scope": 8032, "src": "6343:90:71", "stateMutability": "payable", "superFunction": null, "visibility": "public"}], "scope": 8033, "src": "777:5658:71"}], "src": "580:5856:71"}, "id": 71}, "contracts/exchange/libs/LibExchangeRichErrorDecoder.sol": {"ast": {"absolutePath": "contracts/exchange/libs/LibExchangeRichErrorDecoder.sol", "exportedSymbols": {"LibExchangeRichErrorDecoder": [8688]}, "id": 8689, "nodeType": "SourceUnit", "nodes": [{"id": 8034, "literals": ["solidity", "^", "0.5", ".9"], "nodeType": "PragmaDirective", "src": "580:23:72"}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibOrder.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol", "id": 8035, "nodeType": "ImportDirective", "scope": 8689, "sourceUnit": 11029, "src": "605:64:72", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "file": "@0x/contracts-exchange-libs/contracts/src/LibExchangeRichErrors.sol", "id": 8036, "nodeType": "ImportDirective", "scope": 8689, "sourceUnit": 9343, "src": "670:77:72", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "./contracts/exchange/contracts-utils/contracts/src/LibBytes.sol", "file": "@0x/contracts-utils/contracts/src/LibBytes.sol", "id": 8037, "nodeType": "ImportDirective", "scope": 8689, "sourceUnit": 9844, "src": "748:56:72", "symbolAliases": [], "unitAlias": ""}, {"baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 8688, "linearizedBaseContracts": [8688], "name": "LibExchangeRichErrorDecoder", "nodeType": "ContractDefinition", "nodes": [{"id": 8040, "libraryName": {"contractScope": null, "id": 8038, "name": "LibBytes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 9843, "src": "856:8:72", "typeDescriptions": {"typeIdentifier": "t_contract$_LibBytes_$9843", "typeString": "library LibBytes"}}, "nodeType": "UsingForDirective", "src": "850:25:72", "typeName": {"id": 8039, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "869:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, {"body": {"id": 8091, "nodeType": "Block", "src": "1410:375:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8054, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8042, "src": "1441:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8055, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "1450:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8832, "src": "1450:44:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8057, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1450:46:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8053, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "1420:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8058, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1420:77:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8059, "nodeType": "ExpressionStatement", "src": "1420:77:72"}, {"assignments": [8061], "declarations": [{"constant": false, "id": 8061, "name": "_errorCode", "nodeType": "VariableDeclaration", "scope": 8091, "src": "1507:16:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 8060, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1507:5:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": null, "visibility": "internal"}], "id": 8062, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "1507:16:72"}, {"expression": {"argumentTypes": null, "id": 8082, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8063, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8061, "src": "1534:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, {"argumentTypes": null, "id": 8064, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8047, "src": "1546:4:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 8065, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8049, "src": "1552:13:72", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 8066, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8051, "src": "1567:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "id": 8067, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "1533:44:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$", "typeString": "tuple(uint8,bytes32,address,bytes memory)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8072, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1629:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8073, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8042, "src": "1632:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1632:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8070, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8042, "src": "1604:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "1604:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8075, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1604:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8076, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1662:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}, {"argumentTypes": null, "id": 8077, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1669:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}, {"argumentTypes": null, "id": 8078, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1678:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, {"argumentTypes": null, "id": 8079, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1687:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}], "id": 8080, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1661:32:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(uint8),type(bytes32),type(address),type(bytes storage pointer))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(uint8),type(bytes32),type(address),type(bytes storage pointer))"}], "expression": {"argumentTypes": null, "id": 8068, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "1580:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8069, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1580:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8081, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1580:123:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_address_payable_$_t_bytes_memory_$", "typeString": "tuple(uint8,bytes32,address payable,bytes memory)"}}, "src": "1533:170:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8083, "nodeType": "ExpressionStatement", "src": "1533:170:72"}, {"expression": {"argumentTypes": null, "id": 8089, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 8084, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8045, "src": "1713:9:72", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8087, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8061, "src": "1767:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "expression": {"argumentTypes": null, "id": 8085, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "1725:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8760, "src": "1725:41:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SignatureErrorCodes_$8760_$", "typeString": "type(enum LibExchangeRichErrors.SignatureErrorCodes)"}}, "id": 8088, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1725:53:72", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, "src": "1713:65:72", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, "id": 8090, "nodeType": "ExpressionStatement", "src": "1713:65:72"}]}, "documentation": "@dev Decompose an ABI-encoded SignatureError.\n @param encoded ABI-encoded revert error.\n @return errorCode The error code.\n @return signerAddress The expected signer of the hash.\n @return signature The full signature.", "id": 8092, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeSignatureError", "nodeType": "FunctionDefinition", "parameters": {"id": 8043, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8042, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8092, "src": "1165:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8041, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1165:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1164:22:72"}, "returnParameters": {"id": 8052, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8045, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 8092, "src": "1247:51:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}, "typeName": {"contractScope": null, "id": 8044, "name": "LibExchangeRichErrors.SignatureErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8760, "src": "1247:41:72", "typeDescriptions": {"typeIdentifier": "t_enum$_SignatureErrorCodes_$8760", "typeString": "enum LibExchangeRichErrors.SignatureErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8047, "name": "hash", "nodeType": "VariableDeclaration", "scope": 8092, "src": "1312:12:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8046, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1312:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8049, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 8092, "src": "1338:21:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8048, "name": "address", "nodeType": "ElementaryTypeName", "src": "1338:7:72", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8051, "name": "signature", "nodeType": "VariableDeclaration", "scope": 8092, "src": "1373:22:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8050, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1373:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "1233:172:72"}, "scope": 8688, "src": "1135:650:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8133, "nodeType": "Block", "src": "2363:289:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8106, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8094, "src": "2394:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8107, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "2403:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8108, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "EIP1271SignatureErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8848, "src": "2403:51:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2403:53:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8105, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "2373:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8110, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2373:84:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8111, "nodeType": "ExpressionStatement", "src": "2373:84:72"}, {"expression": {"argumentTypes": null, "id": 8131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8112, "name": "verifyingContractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8097, "src": "2468:24:72", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 8113, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8099, "src": "2494:4:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 8114, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8101, "src": "2500:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 8115, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8103, "src": "2511:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "id": 8116, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "2467:54:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$", "typeString": "tuple(address,bytes memory,bytes memory,bytes memory)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2573:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8122, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8094, "src": "2576:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2576:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8119, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8094, "src": "2548:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8120, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "2548:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8124, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2548:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8125, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2606:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, {"argumentTypes": null, "id": 8126, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2615:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}, {"argumentTypes": null, "id": 8127, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2622:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}, {"argumentTypes": null, "id": 8128, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2629:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}], "id": 8129, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2605:30:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(address),type(bytes storage pointer),type(bytes storage pointer),type(bytes storage pointer))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(address),type(bytes storage pointer),type(bytes storage pointer),type(bytes storage pointer))"}], "expression": {"argumentTypes": null, "id": 8117, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "2524:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8118, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2524:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8130, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2524:121:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_address_payable_$_t_bytes_memory_$_t_bytes_memory_$_t_bytes_memory_$", "typeString": "tuple(address payable,bytes memory,bytes memory,bytes memory)"}}, "src": "2467:178:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8132, "nodeType": "ExpressionStatement", "src": "2467:178:72"}]}, "documentation": "@dev Decompose an ABI-encoded SignatureValidatorError.\n @param encoded ABI-encoded revert error.\n @return signerAddress The expected signer of the hash.\n @return signature The full signature bytes.\n @return errorData The revert data thrown by the validator contract.", "id": 8134, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeEIP1271SignatureError", "nodeType": "FunctionDefinition", "parameters": {"id": 8095, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8094, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8134, "src": "2131:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8093, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2131:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "2130:22:72"}, "returnParameters": {"id": 8104, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8097, "name": "verifyingContractAddress", "nodeType": "VariableDeclaration", "scope": 8134, "src": "2213:32:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8096, "name": "address", "nodeType": "ElementaryTypeName", "src": "2213:7:72", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8099, "name": "data", "nodeType": "VariableDeclaration", "scope": 8134, "src": "2259:17:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8098, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2259:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8101, "name": "signature", "nodeType": "VariableDeclaration", "scope": 8134, "src": "2290:22:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8100, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2290:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8103, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 8134, "src": "2326:22:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8102, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2326:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "2199:159:72"}, "scope": 8688, "src": "2094:558:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8167, "nodeType": "Block", "src": "3107:269:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8144, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8136, "src": "3138:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8145, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "3147:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureValidatorNotApprovedErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8840, "src": "3147:64:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8147, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3147:66:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8143, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "3117:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8148, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3117:97:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8149, "nodeType": "ExpressionStatement", "src": "3117:97:72"}, {"expression": {"argumentTypes": null, "id": 8165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8150, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8139, "src": "3225:13:72", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 8151, "name": "validatorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8141, "src": "3240:16:72", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "id": 8152, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "3224:33:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_address_$_t_address_$", "typeString": "tuple(address,address)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8157, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3309:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8158, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8136, "src": "3312:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3312:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8155, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8136, "src": "3284:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "3284:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8160, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3284:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8161, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3342:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, {"argumentTypes": null, "id": 8162, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3351:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}], "id": 8163, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3341:18:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$", "typeString": "tuple(type(address),type(address))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$", "typeString": "tuple(type(address),type(address))"}], "expression": {"argumentTypes": null, "id": 8153, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "3260:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8154, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3260:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8164, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3260:109:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$", "typeString": "tuple(address payable,address payable)"}}, "src": "3224:145:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8166, "nodeType": "ExpressionStatement", "src": "3224:145:72"}]}, "documentation": "@dev Decompose an ABI-encoded SignatureValidatorNotApprovedError.\n @param encoded ABI-encoded revert error.\n @return signerAddress The expected signer of the hash.\n @return validatorAddress The expected validator.", "id": 8168, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeSignatureValidatorNotApprovedError", "nodeType": "FunctionDefinition", "parameters": {"id": 8137, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8136, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8168, "src": "2951:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8135, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2951:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "2950:22:72"}, "returnParameters": {"id": 8142, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8139, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 8168, "src": "3033:21:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8138, "name": "address", "nodeType": "ElementaryTypeName", "src": "3033:7:72", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8141, "name": "validatorAddress", "nodeType": "VariableDeclaration", "scope": 8168, "src": "3068:24:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8140, "name": "address", "nodeType": "ElementaryTypeName", "src": "3068:7:72", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "3019:83:72"}, "scope": 8688, "src": "2901:475:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8209, "nodeType": "Block", "src": "3976:279:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8182, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8170, "src": "4007:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8183, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "4016:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "SignatureWalletErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8856, "src": "4016:50:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8185, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4016:52:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8181, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "3986:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8186, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3986:83:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8187, "nodeType": "ExpressionStatement", "src": "3986:83:72"}, {"expression": {"argumentTypes": null, "id": 8207, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8188, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8173, "src": "4080:4:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 8189, "name": "signerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8175, "src": "4086:13:72", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 8190, "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8177, "src": "4101:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 8191, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8179, "src": "4112:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "id": 8192, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "4079:43:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$", "typeString": "tuple(bytes32,address,bytes memory,bytes memory)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4174:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8198, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8170, "src": "4177:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4177:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8195, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8170, "src": "4149:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "4149:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4149:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8201, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4207:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}, {"argumentTypes": null, "id": 8202, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4216:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, {"argumentTypes": null, "id": 8203, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4225:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}, {"argumentTypes": null, "id": 8204, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4232:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}], "id": 8205, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4206:32:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(bytes32),type(address),type(bytes storage pointer),type(bytes storage pointer))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(bytes32),type(address),type(bytes storage pointer),type(bytes storage pointer))"}], "expression": {"argumentTypes": null, "id": 8193, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "4125:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8194, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4125:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8206, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4125:123:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_address_payable_$_t_bytes_memory_$_t_bytes_memory_$", "typeString": "tuple(bytes32,address payable,bytes memory,bytes memory)"}}, "src": "4079:169:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8208, "nodeType": "ExpressionStatement", "src": "4079:169:72"}]}, "documentation": "@dev Decompose an ABI-encoded SignatureWalletError.\n @param encoded ABI-encoded revert error.\n @return errorCode The error code.\n @return signerAddress The expected signer of the hash.\n @return signature The full signature bytes.\n @return errorData The revert data thrown by the validator contract.", "id": 8210, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeSignatureWalletError", "nodeType": "FunctionDefinition", "parameters": {"id": 8171, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8170, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8210, "src": "3760:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8169, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3760:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "3759:22:72"}, "returnParameters": {"id": 8180, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8173, "name": "hash", "nodeType": "VariableDeclaration", "scope": 8210, "src": "3842:12:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8172, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3842:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8175, "name": "signerAddress", "nodeType": "VariableDeclaration", "scope": 8210, "src": "3868:21:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8174, "name": "address", "nodeType": "ElementaryTypeName", "src": "3868:7:72", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8177, "name": "signature", "nodeType": "VariableDeclaration", "scope": 8210, "src": "3903:22:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8176, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3903:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8179, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 8210, "src": "3939:22:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8178, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3939:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "3828:143:72"}, "scope": 8688, "src": "3724:531:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8253, "nodeType": "Block", "src": "4646:327:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8220, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8212, "src": "4677:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8221, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "4686:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatusErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8864, "src": "4686:46:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8223, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4686:48:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8219, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "4656:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8224, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4656:79:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8225, "nodeType": "ExpressionStatement", "src": "4656:79:72"}, {"assignments": [8227], "declarations": [{"constant": false, "id": 8227, "name": "_orderStatus", "nodeType": "VariableDeclaration", "scope": 8253, "src": "4745:18:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 8226, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4745:5:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": null, "visibility": "internal"}], "id": 8228, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "4745:18:72"}, {"expression": {"argumentTypes": null, "id": 8244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8229, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8215, "src": "4774:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 8230, "name": "_orderStatus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8227, "src": "4785:12:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "id": 8231, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "4773:25:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_uint8_$", "typeString": "tuple(bytes32,uint8)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8236, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4850:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8237, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8212, "src": "4853:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4853:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8234, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8212, "src": "4825:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "4825:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8239, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4825:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8240, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4883:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}, {"argumentTypes": null, "id": 8241, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4892:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}], "id": 8242, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4882:16:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_uint8_$_$", "typeString": "tuple(type(bytes32),type(uint8))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_uint8_$_$", "typeString": "tuple(type(bytes32),type(uint8))"}], "expression": {"argumentTypes": null, "id": 8232, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "4801:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8233, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4801:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8243, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4801:107:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_uint8_$", "typeString": "tuple(bytes32,uint8)"}}, "src": "4773:135:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8245, "nodeType": "ExpressionStatement", "src": "4773:135:72"}, {"expression": {"argumentTypes": null, "id": 8251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 8246, "name": "orderStatus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8217, "src": "4918:11:72", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8249, "name": "_orderStatus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8227, "src": "4953:12:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "expression": {"argumentTypes": null, "id": 8247, "name": "LibOrder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11028, "src": "4932:8:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibOrder_$11028_$", "typeString": "type(library LibOrder)"}}, "id": 8248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderStatus", "nodeType": "MemberAccess", "referencedDeclaration": 10934, "src": "4932:20:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_OrderStatus_$10934_$", "typeString": "type(enum LibOrder.OrderStatus)"}}, "id": 8250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4932:34:72", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "src": "4918:48:72", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "id": 8252, "nodeType": "ExpressionStatement", "src": "4918:48:72"}]}, "documentation": "@dev Decompose an ABI-encoded OrderStatusError.\n @param encoded ABI-encoded revert error.\n @return orderHash The order hash.\n @return orderStatus The order status.", "id": 8254, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeOrderStatusError", "nodeType": "FunctionDefinition", "parameters": {"id": 8213, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8212, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8254, "src": "4486:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8211, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4486:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "4485:22:72"}, "returnParameters": {"id": 8218, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8215, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 8254, "src": "4568:17:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8214, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4568:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8217, "name": "orderStatus", "nodeType": "VariableDeclaration", "scope": 8254, "src": "4599:32:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}, "typeName": {"contractScope": null, "id": 8216, "name": "LibOrder.OrderStatus", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10934, "src": "4599:20:72", "typeDescriptions": {"typeIdentifier": "t_enum$_OrderStatus_$10934", "typeString": "enum LibOrder.OrderStatus"}}, "value": null, "visibility": "internal"}], "src": "4554:87:72"}, "scope": 8688, "src": "4454:519:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8301, "nodeType": "Block", "src": "5547:382:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8266, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8256, "src": "5578:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8267, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "5587:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ExchangeInvalidContextErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8872, "src": "5587:57:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5587:59:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8265, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "5557:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8270, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5557:90:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8271, "nodeType": "ExpressionStatement", "src": "5557:90:72"}, {"assignments": [8273], "declarations": [{"constant": false, "id": 8273, "name": "_errorCode", "nodeType": "VariableDeclaration", "scope": 8301, "src": "5657:16:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 8272, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5657:5:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": null, "visibility": "internal"}], "id": 8274, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "5657:16:72"}, {"expression": {"argumentTypes": null, "id": 8292, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8275, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8273, "src": "5684:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, {"argumentTypes": null, "id": 8276, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8261, "src": "5696:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 8277, "name": "contextAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8263, "src": "5707:14:72", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "id": 8278, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "5683:39:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_address_$", "typeString": "tuple(uint8,bytes32,address)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5774:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8284, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8256, "src": "5777:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5777:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8281, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8256, "src": "5749:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "5749:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5749:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8287, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5807:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}, {"argumentTypes": null, "id": 8288, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5814:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}, {"argumentTypes": null, "id": 8289, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5823:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}], "id": 8290, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "5806:25:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$_t_type$_t_address_$_$", "typeString": "tuple(type(uint8),type(bytes32),type(address))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$_t_type$_t_address_$_$", "typeString": "tuple(type(uint8),type(bytes32),type(address))"}], "expression": {"argumentTypes": null, "id": 8279, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "5725:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8280, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5725:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5725:116:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_address_payable_$", "typeString": "tuple(uint8,bytes32,address payable)"}}, "src": "5683:158:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8293, "nodeType": "ExpressionStatement", "src": "5683:158:72"}, {"expression": {"argumentTypes": null, "id": 8299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 8294, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8259, "src": "5851:9:72", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8297, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8273, "src": "5911:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "expression": {"argumentTypes": null, "id": 8295, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "5863:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ExchangeContextErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8747, "src": "5863:47:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_ExchangeContextErrorCodes_$8747_$", "typeString": "type(enum LibExchangeRichErrors.ExchangeContextErrorCodes)"}}, "id": 8298, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5863:59:72", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, "src": "5851:71:72", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, "id": 8300, "nodeType": "ExpressionStatement", "src": "5851:71:72"}]}, "documentation": "@dev Decompose an ABI-encoded OrderStatusError.\n @param encoded ABI-encoded revert error.\n @return errorCode Error code that corresponds to invalid maker, taker, or sender.\n @return orderHash The order hash.\n @return contextAddress The maker, taker, or sender address", "id": 8302, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeExchangeInvalidContextError", "nodeType": "FunctionDefinition", "parameters": {"id": 8257, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8256, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8302, "src": "5326:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8255, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5326:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "5325:22:72"}, "returnParameters": {"id": 8264, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8259, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 8302, "src": "5408:57:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}, "typeName": {"contractScope": null, "id": 8258, "name": "LibExchangeRichErrors.ExchangeContextErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8747, "src": "5408:47:72", "typeDescriptions": {"typeIdentifier": "t_enum$_ExchangeContextErrorCodes_$8747", "typeString": "enum LibExchangeRichErrors.ExchangeContextErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8261, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 8302, "src": "5479:17:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8260, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5479:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8263, "name": "contextAddress", "nodeType": "VariableDeclaration", "scope": 8302, "src": "5510:22:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8262, "name": "address", "nodeType": "ElementaryTypeName", "src": "5510:7:72", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "5394:148:72"}, "scope": 8688, "src": "5283:646:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8345, "nodeType": "Block", "src": "6316:328:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8312, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8304, "src": "6347:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8313, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "6356:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "FillErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8880, "src": "6356:39:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8315, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6356:41:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8311, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "6326:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8316, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6326:72:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8317, "nodeType": "ExpressionStatement", "src": "6326:72:72"}, {"assignments": [8319], "declarations": [{"constant": false, "id": 8319, "name": "_errorCode", "nodeType": "VariableDeclaration", "scope": 8345, "src": "6408:16:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 8318, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6408:5:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": null, "visibility": "internal"}], "id": 8320, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "6408:16:72"}, {"expression": {"argumentTypes": null, "id": 8336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8321, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8319, "src": "6435:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, {"argumentTypes": null, "id": 8322, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8309, "src": "6447:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 8323, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "6434:23:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$", "typeString": "tuple(uint8,bytes32)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6509:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8329, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8304, "src": "6512:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6512:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8326, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8304, "src": "6484:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "6484:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8331, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6484:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8332, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6542:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}, {"argumentTypes": null, "id": 8333, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6549:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}], "id": 8334, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "6541:16:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$", "typeString": "tuple(type(uint8),type(bytes32))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$", "typeString": "tuple(type(uint8),type(bytes32))"}], "expression": {"argumentTypes": null, "id": 8324, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "6460:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8325, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6460:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8335, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6460:107:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$", "typeString": "tuple(uint8,bytes32)"}}, "src": "6434:133:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8337, "nodeType": "ExpressionStatement", "src": "6434:133:72"}, {"expression": {"argumentTypes": null, "id": 8343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 8338, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8307, "src": "6577:9:72", "typeDescriptions": {"typeIdentifier": "t_enum$_FillErrorCodes_$8752", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8341, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8319, "src": "6626:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "expression": {"argumentTypes": null, "id": 8339, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "6589:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "FillErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8752, "src": "6589:36:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_FillErrorCodes_$8752_$", "typeString": "type(enum LibExchangeRichErrors.FillErrorCodes)"}}, "id": 8342, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6589:48:72", "typeDescriptions": {"typeIdentifier": "t_enum$_FillErrorCodes_$8752", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}}, "src": "6577:60:72", "typeDescriptions": {"typeIdentifier": "t_enum$_FillErrorCodes_$8752", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}}, "id": 8344, "nodeType": "ExpressionStatement", "src": "6577:60:72"}]}, "documentation": "@dev Decompose an ABI-encoded FillError.\n @param encoded ABI-encoded revert error.\n @return errorCode The error code.\n @return orderHash The order hash.", "id": 8346, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeFillError", "nodeType": "FunctionDefinition", "parameters": {"id": 8305, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8304, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8346, "src": "6142:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8303, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6142:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "6141:22:72"}, "returnParameters": {"id": 8310, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8307, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 8346, "src": "6224:46:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_FillErrorCodes_$8752", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}, "typeName": {"contractScope": null, "id": 8306, "name": "LibExchangeRichErrors.FillErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8752, "src": "6224:36:72", "typeDescriptions": {"typeIdentifier": "t_enum$_FillErrorCodes_$8752", "typeString": "enum LibExchangeRichErrors.FillErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8309, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 8346, "src": "6284:17:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8308, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6284:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "6210:101:72"}, "scope": 8688, "src": "6117:527:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8383, "nodeType": "Block", "src": "7137:274:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8358, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8348, "src": "7168:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8359, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "7177:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OrderEpochErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8888, "src": "7177:45:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8361, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7177:47:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8357, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "7147:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8362, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7147:78:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8363, "nodeType": "ExpressionStatement", "src": "7147:78:72"}, {"expression": {"argumentTypes": null, "id": 8381, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8364, "name": "makerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8351, "src": "7236:12:72", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 8365, "name": "orderSenderAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8353, "src": "7250:18:72", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"argumentTypes": null, "id": 8366, "name": "currentEpoch", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8355, "src": "7270:12:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 8367, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "7235:48:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_uint256_$", "typeString": "tuple(address,address,uint256)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7335:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8373, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8348, "src": "7338:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7338:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8370, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8348, "src": "7310:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "7310:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8375, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7310:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8376, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7368:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, {"argumentTypes": null, "id": 8377, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7377:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}, {"argumentTypes": null, "id": 8378, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7386:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": "uint256"}], "id": 8379, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "7367:27:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$", "typeString": "tuple(type(address),type(address),type(uint256))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$", "typeString": "tuple(type(address),type(address),type(uint256))"}], "expression": {"argumentTypes": null, "id": 8368, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "7286:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8369, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7286:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8380, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7286:118:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_uint256_$", "typeString": "tuple(address payable,address payable,uint256)"}}, "src": "7235:169:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8382, "nodeType": "ExpressionStatement", "src": "7235:169:72"}]}, "documentation": "@dev Decompose an ABI-encoded OrderEpochError.\n @param encoded ABI-encoded revert error.\n @return makerAddress The order maker.\n @return orderSenderAddress The order sender.\n @return currentEpoch The current epoch for the maker.", "id": 8384, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeOrderEpochError", "nodeType": "FunctionDefinition", "parameters": {"id": 8349, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8348, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8384, "src": "6946:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8347, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6946:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "6945:22:72"}, "returnParameters": {"id": 8356, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8351, "name": "makerAddress", "nodeType": "VariableDeclaration", "scope": 8384, "src": "7028:20:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8350, "name": "address", "nodeType": "ElementaryTypeName", "src": "7028:7:72", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8353, "name": "orderSenderAddress", "nodeType": "VariableDeclaration", "scope": 8384, "src": "7062:26:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8352, "name": "address", "nodeType": "ElementaryTypeName", "src": "7062:7:72", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8355, "name": "currentEpoch", "nodeType": "VariableDeclaration", "scope": 8384, "src": "7102:20:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8354, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7102:7:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "7014:118:72"}, "scope": 8688, "src": "6915:496:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8417, "nodeType": "Block", "src": "7812:255:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8394, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8386, "src": "7843:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8395, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "7852:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AssetProxyExistsErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8896, "src": "7852:51:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8397, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7852:53:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8393, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "7822:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8398, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7822:84:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8399, "nodeType": "ExpressionStatement", "src": "7822:84:72"}, {"expression": {"argumentTypes": null, "id": 8415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8400, "name": "assetProxyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8389, "src": "7917:12:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"argumentTypes": null, "id": 8401, "name": "assetProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8391, "src": "7931:17:72", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "id": 8402, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "7916:33:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes4_$_t_address_$", "typeString": "tuple(bytes4,address)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8407, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8001:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8408, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8386, "src": "8004:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8004:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8405, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8386, "src": "7976:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8406, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "7976:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8410, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7976:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8411, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8034:6:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes4_$", "typeString": "type(bytes4)"}, "typeName": "bytes4"}, {"argumentTypes": null, "id": 8412, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8042:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": "address"}], "id": 8413, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "8033:17:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_address_$_$", "typeString": "tuple(type(bytes4),type(address))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_address_$_$", "typeString": "tuple(type(bytes4),type(address))"}], "expression": {"argumentTypes": null, "id": 8403, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "7952:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8404, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7952:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8414, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7952:108:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes4_$_t_address_payable_$", "typeString": "tuple(bytes4,address payable)"}}, "src": "7916:144:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8416, "nodeType": "ExpressionStatement", "src": "7916:144:72"}]}, "documentation": "@dev Decompose an ABI-encoded AssetProxyExistsError.\n @param encoded ABI-encoded revert error.\n @return assetProxyId Id of asset proxy.\n @return assetProxyAddress The address of the asset proxy.", "id": 8418, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeAssetProxyExistsError", "nodeType": "FunctionDefinition", "parameters": {"id": 8387, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8386, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8418, "src": "7678:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8385, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7678:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "7677:22:72"}, "returnParameters": {"id": 8392, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8389, "name": "assetProxyId", "nodeType": "VariableDeclaration", "scope": 8418, "src": "7760:19:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8388, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "7760:6:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8391, "name": "assetProxyAddress", "nodeType": "VariableDeclaration", "scope": 8418, "src": "7781:25:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8390, "name": "address", "nodeType": "ElementaryTypeName", "src": "7781:7:72", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": null, "visibility": "internal"}], "src": "7746:61:72"}, "scope": 8688, "src": "7641:426:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8465, "nodeType": "Block", "src": "8620:374:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8430, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8420, "src": "8651:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8431, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "8660:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AssetProxyDispatchErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8904, "src": "8660:53:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8433, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8660:55:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8429, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "8630:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8434, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8630:86:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8435, "nodeType": "ExpressionStatement", "src": "8630:86:72"}, {"assignments": [8437], "declarations": [{"constant": false, "id": 8437, "name": "_errorCode", "nodeType": "VariableDeclaration", "scope": 8465, "src": "8726:16:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 8436, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "8726:5:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": null, "visibility": "internal"}], "id": 8438, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "8726:16:72"}, {"expression": {"argumentTypes": null, "id": 8456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8439, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8437, "src": "8753:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, {"argumentTypes": null, "id": 8440, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8425, "src": "8765:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 8441, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8427, "src": "8776:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "id": 8442, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "8752:34:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes_memory_ptr_$", "typeString": "tuple(uint8,bytes32,bytes memory)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8447, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8838:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8448, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8420, "src": "8841:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8841:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8445, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8420, "src": "8813:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "8813:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8450, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8813:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8451, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8871:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}, {"argumentTypes": null, "id": 8452, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8878:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}, {"argumentTypes": null, "id": 8453, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8887:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}], "id": 8454, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "8870:23:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(uint8),type(bytes32),type(bytes storage pointer))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(uint8),type(bytes32),type(bytes storage pointer))"}], "expression": {"argumentTypes": null, "id": 8443, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "8789:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8444, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8789:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8455, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8789:114:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes_memory_$", "typeString": "tuple(uint8,bytes32,bytes memory)"}}, "src": "8752:151:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8457, "nodeType": "ExpressionStatement", "src": "8752:151:72"}, {"expression": {"argumentTypes": null, "id": 8463, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 8458, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8423, "src": "8913:9:72", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8461, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8437, "src": "8976:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "expression": {"argumentTypes": null, "id": 8459, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "8925:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AssetProxyDispatchErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8738, "src": "8925:50:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_AssetProxyDispatchErrorCodes_$8738_$", "typeString": "type(enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes)"}}, "id": 8462, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8925:62:72", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}}, "src": "8913:74:72", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}}, "id": 8464, "nodeType": "ExpressionStatement", "src": "8913:74:72"}]}, "documentation": "@dev Decompose an ABI-encoded AssetProxyDispatchError.\n @param encoded ABI-encoded revert error.\n @return errorCode The error code.\n @return orderHash Hash of the order being dispatched.\n @return assetData Asset data of the order being dispatched.", "id": 8466, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeAssetProxyDispatchError", "nodeType": "FunctionDefinition", "parameters": {"id": 8421, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8420, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8466, "src": "8396:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8419, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8396:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8395:22:72"}, "returnParameters": {"id": 8428, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8423, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 8466, "src": "8478:60:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}, "typeName": {"contractScope": null, "id": 8422, "name": "LibExchangeRichErrors.AssetProxyDispatchErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8738, "src": "8478:50:72", "typeDescriptions": {"typeIdentifier": "t_enum$_AssetProxyDispatchErrorCodes_$8738", "typeString": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8425, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 8466, "src": "8552:17:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8424, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8552:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8427, "name": "assetData", "nodeType": "VariableDeclaration", "scope": 8466, "src": "8583:22:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8426, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8583:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "8464:151:72"}, "scope": 8688, "src": "8357:637:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8503, "nodeType": "Block", "src": "9539:263:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8478, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8468, "src": "9570:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8479, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "9579:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AssetProxyTransferErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8912, "src": "9579:53:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9579:55:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8477, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "9549:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8482, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9549:86:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8483, "nodeType": "ExpressionStatement", "src": "9549:86:72"}, {"expression": {"argumentTypes": null, "id": 8501, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8484, "name": "orderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8471, "src": "9646:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 8485, "name": "assetData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8473, "src": "9657:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "id": 8486, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8475, "src": "9668:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "id": 8487, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "9645:33:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$", "typeString": "tuple(bytes32,bytes memory,bytes memory)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8492, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9730:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8493, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8468, "src": "9733:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9733:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8490, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8468, "src": "9705:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "9705:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8495, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9705:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8496, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9763:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}, {"argumentTypes": null, "id": 8497, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9772:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}, {"argumentTypes": null, "id": 8498, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9779:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}], "id": 8499, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "9762:23:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(bytes32),type(bytes storage pointer),type(bytes storage pointer))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(bytes32),type(bytes storage pointer),type(bytes storage pointer))"}], "expression": {"argumentTypes": null, "id": 8488, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "9681:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8489, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9681:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8500, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9681:114:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes_memory_$_t_bytes_memory_$", "typeString": "tuple(bytes32,bytes memory,bytes memory)"}}, "src": "9645:150:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8502, "nodeType": "ExpressionStatement", "src": "9645:150:72"}]}, "documentation": "@dev Decompose an ABI-encoded AssetProxyTransferError.\n @param encoded ABI-encoded revert error.\n @return orderHash Hash of the order being dispatched.\n @return assetData Asset data of the order being dispatched.\n @return errorData ABI-encoded revert data from the asset proxy.", "id": 8504, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeAssetProxyTransferError", "nodeType": "FunctionDefinition", "parameters": {"id": 8469, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8468, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8504, "src": "9353:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8467, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9353:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9352:22:72"}, "returnParameters": {"id": 8476, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8471, "name": "orderHash", "nodeType": "VariableDeclaration", "scope": 8504, "src": "9435:17:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8470, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9435:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8473, "name": "assetData", "nodeType": "VariableDeclaration", "scope": 8504, "src": "9466:22:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8472, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9466:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8475, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 8504, "src": "9502:22:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8474, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "9502:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "9421:113:72"}, "scope": 8688, "src": "9314:488:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8537, "nodeType": "Block", "src": "10243:252:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8514, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8506, "src": "10274:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8515, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "10283:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "NegativeSpreadErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8920, "src": "10283:49:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8517, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10283:51:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8513, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "10253:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8518, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10253:82:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8519, "nodeType": "ExpressionStatement", "src": "10253:82:72"}, {"expression": {"argumentTypes": null, "id": 8535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8520, "name": "leftOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8509, "src": "10346:13:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 8521, "name": "rightOrderHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8511, "src": "10361:14:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 8522, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "10345:31:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", "typeString": "tuple(bytes32,bytes32)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8527, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10428:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8528, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8506, "src": "10431:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10431:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8525, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8506, "src": "10403:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "10403:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8530, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10403:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8531, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10461:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}, {"argumentTypes": null, "id": 8532, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10470:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}], "id": 8533, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10460:18:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes32_$_$", "typeString": "tuple(type(bytes32),type(bytes32))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes32_$_$", "typeString": "tuple(type(bytes32),type(bytes32))"}], "expression": {"argumentTypes": null, "id": 8523, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "10379:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8524, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10379:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8534, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10379:109:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", "typeString": "tuple(bytes32,bytes32)"}}, "src": "10345:143:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8536, "nodeType": "ExpressionStatement", "src": "10345:143:72"}]}, "documentation": "@dev Decompose an ABI-encoded NegativeSpreadError.\n @param encoded ABI-encoded revert error.\n @return leftOrderHash Hash of the left order being matched.\n @return rightOrderHash Hash of the right order being matched.", "id": 8538, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeNegativeSpreadError", "nodeType": "FunctionDefinition", "parameters": {"id": 8507, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8506, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8538, "src": "10089:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8505, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10089:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "10088:22:72"}, "returnParameters": {"id": 8512, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8509, "name": "leftOrderHash", "nodeType": "VariableDeclaration", "scope": 8538, "src": "10171:21:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8508, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10171:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8511, "name": "rightOrderHash", "nodeType": "VariableDeclaration", "scope": 8538, "src": "10206:22:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8510, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10206:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "10157:81:72"}, "scope": 8688, "src": "10054:441:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8581, "nodeType": "Block", "src": "10924:348:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8548, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8540, "src": "10955:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8549, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "10964:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransactionErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8928, "src": "10964:46:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8551, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10964:48:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8547, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "10934:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8552, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10934:79:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8553, "nodeType": "ExpressionStatement", "src": "10934:79:72"}, {"assignments": [8555], "declarations": [{"constant": false, "id": 8555, "name": "_errorCode", "nodeType": "VariableDeclaration", "scope": 8581, "src": "11023:16:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 8554, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "11023:5:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": null, "visibility": "internal"}], "id": 8556, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "11023:16:72"}, {"expression": {"argumentTypes": null, "id": 8572, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8557, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8555, "src": "11050:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, {"argumentTypes": null, "id": 8558, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8545, "src": "11062:15:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 8559, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "11049:29:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$", "typeString": "tuple(uint8,bytes32)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8564, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11130:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8565, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8540, "src": "11133:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11133:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8562, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8540, "src": "11105:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "11105:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8567, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11105:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8568, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11163:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}, {"argumentTypes": null, "id": 8569, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11170:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}], "id": 8570, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "11162:16:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$", "typeString": "tuple(type(uint8),type(bytes32))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$", "typeString": "tuple(type(uint8),type(bytes32))"}], "expression": {"argumentTypes": null, "id": 8560, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "11081:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8561, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11081:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8571, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11081:107:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$", "typeString": "tuple(uint8,bytes32)"}}, "src": "11049:139:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8573, "nodeType": "ExpressionStatement", "src": "11049:139:72"}, {"expression": {"argumentTypes": null, "id": 8579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 8574, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8543, "src": "11198:9:72", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8577, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8555, "src": "11254:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "expression": {"argumentTypes": null, "id": 8575, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "11210:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransactionErrorCodes", "nodeType": "MemberAccess", "referencedDeclaration": 8763, "src": "11210:43:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_TransactionErrorCodes_$8763_$", "typeString": "type(enum LibExchangeRichErrors.TransactionErrorCodes)"}}, "id": 8578, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11210:55:72", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}}, "src": "11198:67:72", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}}, "id": 8580, "nodeType": "ExpressionStatement", "src": "11198:67:72"}]}, "documentation": "@dev Decompose an ABI-encoded TransactionError.\n @param encoded ABI-encoded revert error.\n @return errorCode The error code.\n @return transactionHash Hash of the transaction.", "id": 8582, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeTransactionError", "nodeType": "FunctionDefinition", "parameters": {"id": 8541, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8540, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8582, "src": "10737:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8539, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10737:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "10736:22:72"}, "returnParameters": {"id": 8546, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8543, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 8582, "src": "10819:53:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}, "typeName": {"contractScope": null, "id": 8542, "name": "LibExchangeRichErrors.TransactionErrorCodes", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8763, "src": "10819:43:72", "typeDescriptions": {"typeIdentifier": "t_enum$_TransactionErrorCodes_$8763", "typeString": "enum LibExchangeRichErrors.TransactionErrorCodes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8545, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 8582, "src": "10886:23:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8544, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10886:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}], "src": "10805:114:72"}, "scope": 8688, "src": "10705:567:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8615, "nodeType": "Block", "src": "11710:253:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8592, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8584, "src": "11741:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8593, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "11750:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "TransactionExecutionErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8936, "src": "11750:55:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8595, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11750:57:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8591, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "11720:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8596, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11720:88:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8597, "nodeType": "ExpressionStatement", "src": "11720:88:72"}, {"expression": {"argumentTypes": null, "id": 8613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8598, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8587, "src": "11819:15:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"argumentTypes": null, "id": 8599, "name": "errorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8589, "src": "11836:9:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "id": 8600, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "11818:28:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes_memory_ptr_$", "typeString": "tuple(bytes32,bytes memory)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11898:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8606, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8584, "src": "11901:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11901:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8603, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8584, "src": "11873:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "11873:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11873:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8609, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11931:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": "bytes32"}, {"argumentTypes": null, "id": 8610, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11940:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": "bytes"}], "id": 8611, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "11930:16:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(bytes32),type(bytes storage pointer))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes_storage_ptr_$_$", "typeString": "tuple(type(bytes32),type(bytes storage pointer))"}], "expression": {"argumentTypes": null, "id": 8601, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "11849:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8602, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11849:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8612, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11849:107:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes_memory_$", "typeString": "tuple(bytes32,bytes memory)"}}, "src": "11818:138:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8614, "nodeType": "ExpressionStatement", "src": "11818:138:72"}]}, "documentation": "@dev Decompose an ABI-encoded TransactionExecutionError.\n @param encoded ABI-encoded revert error.\n @return transactionHash Hash of the transaction.\n @return errorData Error thrown by exeucteTransaction().", "id": 8616, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeTransactionExecutionError", "nodeType": "FunctionDefinition", "parameters": {"id": 8585, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8584, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8616, "src": "11554:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8583, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11554:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "11553:22:72"}, "returnParameters": {"id": 8590, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8587, "name": "transactionHash", "nodeType": "VariableDeclaration", "scope": 8616, "src": "11636:23:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8586, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11636:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8589, "name": "errorData", "nodeType": "VariableDeclaration", "scope": 8616, "src": "11673:22:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8588, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11673:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "11622:83:72"}, "scope": 8688, "src": "11513:450:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8663, "nodeType": "Block", "src": "12410:393:72", "statements": [{"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8628, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8618, "src": "12441:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "arguments": [], "expression": {"argumentTypes": [], "expression": {"argumentTypes": null, "id": 8629, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "12450:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "IncompleteFillErrorSelector", "nodeType": "MemberAccess", "referencedDeclaration": 8944, "src": "12450:49:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes4_$", "typeString": "function () pure returns (bytes4)"}}, "id": 8631, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12450:51:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 8627, "name": "_assertSelectorBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8687, "src": "12420:20:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$", "typeString": "function (bytes memory,bytes4) pure"}}, "id": 8632, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12420:82:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8633, "nodeType": "ExpressionStatement", "src": "12420:82:72"}, {"assignments": [8635], "declarations": [{"constant": false, "id": 8635, "name": "_errorCode", "nodeType": "VariableDeclaration", "scope": 8663, "src": "12512:16:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 8634, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "12512:5:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": null, "visibility": "internal"}], "id": 8636, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "12512:16:72"}, {"expression": {"argumentTypes": null, "id": 8654, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8637, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8635, "src": "12539:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, {"argumentTypes": null, "id": 8638, "name": "expectedAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8623, "src": "12551:23:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"argumentTypes": null, "id": 8639, "name": "actualAssetFillAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8625, "src": "12576:21:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 8640, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "12538:60:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint8,uint256,uint256)"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "arguments": [{"argumentTypes": null, "hexValue": "34", "id": 8645, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12650:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, {"argumentTypes": null, "expression": {"argumentTypes": null, "id": 8646, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8618, "src": "12653:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12653:14:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"argumentTypes": null, "id": 8643, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8618, "src": "12625:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 8644, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sliceDestructive", "nodeType": "MemberAccess", "referencedDeclaration": 9529, "src": "12625:24:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"}}, "id": 8648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12625:43:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "components": [{"argumentTypes": null, "id": 8649, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "12683:5:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": "uint8"}, {"argumentTypes": null, "id": 8650, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "12690:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": "uint256"}, {"argumentTypes": null, "id": 8651, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "12699:7:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": "uint256"}], "id": 8652, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "12682:25:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", "typeString": "tuple(type(uint8),type(uint256),type(uint256))"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_tuple$_t_type$_t_uint8_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", "typeString": "tuple(type(uint8),type(uint256),type(uint256))"}], "expression": {"argumentTypes": null, "id": 8641, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12078, "src": "12601:3:72", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8642, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "12601:10:72", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8653, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12601:116:72", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint8_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint8,uint256,uint256)"}}, "src": "12538:179:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8655, "nodeType": "ExpressionStatement", "src": "12538:179:72"}, {"expression": {"argumentTypes": null, "id": 8661, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"argumentTypes": null, "id": 8656, "name": "errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8621, "src": "12727:9:72", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8659, "name": "_errorCode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8635, "src": "12785:10:72", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "expression": {"argumentTypes": null, "id": 8657, "name": "LibExchangeRichErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9342, "src": "12739:21:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibExchangeRichErrors_$9342_$", "typeString": "type(library LibExchangeRichErrors)"}}, "id": 8658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "IncompleteFillErrorCode", "nodeType": "MemberAccess", "referencedDeclaration": 8767, "src": "12739:45:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_IncompleteFillErrorCode_$8767_$", "typeString": "type(enum LibExchangeRichErrors.IncompleteFillErrorCode)"}}, "id": 8660, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12739:57:72", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}}, "src": "12727:69:72", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}}, "id": 8662, "nodeType": "ExpressionStatement", "src": "12727:69:72"}]}, "documentation": "@dev Decompose an ABI-encoded IncompleteFillError.\n @param encoded ABI-encoded revert error.\n @return orderHash Hash of the order being filled.", "id": 8664, "implemented": true, "kind": "function", "modifiers": [], "name": "decodeIncompleteFillError", "nodeType": "FunctionDefinition", "parameters": {"id": 8619, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8618, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8664, "src": "12170:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8617, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12170:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}], "src": "12169:22:72"}, "returnParameters": {"id": 8626, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8621, "name": "errorCode", "nodeType": "VariableDeclaration", "scope": 8664, "src": "12252:55:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}, "typeName": {"contractScope": null, "id": 8620, "name": "LibExchangeRichErrors.IncompleteFillErrorCode", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 8767, "src": "12252:45:72", "typeDescriptions": {"typeIdentifier": "t_enum$_IncompleteFillErrorCode_$8767", "typeString": "enum LibExchangeRichErrors.IncompleteFillErrorCode"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8623, "name": "expectedAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 8664, "src": "12321:31:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8622, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12321:7:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8625, "name": "actualAssetFillAmount", "nodeType": "VariableDeclaration", "scope": 8664, "src": "12366:29:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8624, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12366:7:72", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": null, "visibility": "internal"}], "src": "12238:167:72"}, "scope": 8688, "src": "12135:668:72", "stateMutability": "pure", "superFunction": null, "visibility": "internal"}, {"body": {"id": 8686, "nodeType": "Block", "src": "12986:167:72", "statements": [{"assignments": [8672], "declarations": [{"constant": false, "id": 8672, "name": "actualSelector", "nodeType": "VariableDeclaration", "scope": 8686, "src": "12996:21:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8671, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "12996:6:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "id": 8678, "initialValue": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "id": 8675, "name": "encoded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8666, "src": "13040:7:72", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"argumentTypes": null, "hexValue": "30", "id": 8676, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13049:1:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"argumentTypes": null, "id": 8673, "name": "LibBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9843, "src": "13020:8:72", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_LibBytes_$9843_$", "typeString": "type(library LibBytes)"}}, "id": 8674, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "readBytes4", "nodeType": "MemberAccess", "referencedDeclaration": 9833, "src": "13020:19:72", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes4_$", "typeString": "function (bytes memory,uint256) pure returns (bytes4)"}}, "id": 8677, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13020:31:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "VariableDeclarationStatement", "src": "12996:55:72"}, {"expression": {"argumentTypes": null, "arguments": [{"argumentTypes": null, "commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 8682, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"argumentTypes": null, "id": 8680, "name": "actualSelector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8672, "src": "13082:14:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"argumentTypes": null, "id": 8681, "name": "selector", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8668, "src": "13100:8:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "13082:26:72", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"argumentTypes": null, "hexValue": "4241445f53454c4543544f52", "id": 8683, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "13122:14:72", "subdenomination": null, "typeDescriptions": {"typeIdentifier": "t_stringliteral_c3ee4099abf3766c7865254b18e14869a2d5738cee702a69dd3b53f35e902f45", "typeString": "literal_string \"BAD_SELECTOR\""}, "value": "BAD_SELECTOR"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_c3ee4099abf3766c7865254b18e14869a2d5738cee702a69dd3b53f35e902f45", "typeString": "literal_string \"BAD_SELECTOR\""}], "id": 8679, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [12094, 12095], "referencedDeclaration": 12095, "src": "13061:7:72", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8684, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13061:85:72", "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8685, "nodeType": "ExpressionStatement", "src": "13061:85:72"}]}, "documentation": "@dev Revert if the leading 4 bytes of `encoded` is not `selector`.", "id": 8687, "implemented": true, "kind": "function", "modifiers": [], "name": "_assertSelectorBytes", "nodeType": "FunctionDefinition", "parameters": {"id": 8669, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8666, "name": "encoded", "nodeType": "VariableDeclaration", "scope": 8687, "src": "12914:20:72", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 8665, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12914:5:72", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "value": null, "visibility": "internal"}, {"constant": false, "id": 8668, "name": "selector", "nodeType": "VariableDeclaration", "scope": 8687, "src": "12936:15:72", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 8667, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "12936:6:72", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": null, "visibility": "internal"}], "src": "12913:39:72"}, "returnParameters": {"id": 8670, "nodeType": "ParameterList", "parameters": [], "src": "12986:0:72"}, "scope": 8688, "src": "12884:269:72", "stateMutability": "pure", "superFunction": null, "visibility": "private"}], "scope": 8689, "src": "807:12348:72"}], "src": "580:12576:72"}, "id": 72}}} \ No newline at end of file