{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IOracle",
          "name": "_oracle",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "CallbackModule_TargetHasNoCode",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Module_OnlyOracle",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "Callback",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_finalizer",
          "type": "address"
        }
      ],
      "name": "RequestFinalized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ORACLE",
      "outputs": [
        {
          "internalType": "contract IOracle",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "decodeRequestData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct ICallbackModule.RequestParameters",
          "name": "_params",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_finalizer",
          "type": "address"
        }
      ],
      "name": "finalizeRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "moduleName",
      "outputs": [
        {
          "internalType": "string",
          "name": "_moduleName",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oracle",
      "outputs": [
        {
          "internalType": "address",
          "name": "_oracle",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "requestData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "_requestData",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "setupRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60a060405234801561001057600080fd5b50604051610c63380380610c6383398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610bc461009f6000396000818160d801528181610141015281816101b6015261024f0152610bc46000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806338013f021161005b57806338013f02146100d35780634d610a461461011f5780637dc0d1d01461013f57806393f0899a1461016557600080fd5b80632e76be2a14610082578063309de607146100975780633661346b146100aa575b600080fd5b610095610090366004610594565b61019e565b005b6100956100a5366004610635565b610237565b6100bd6100b8366004610665565b6103cc565b6040516100ca91906106ec565b60405180910390f35b6100fa7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ca565b61013261012d366004610665565b610466565b6040516100ca9190610706565b7f00000000000000000000000000000000000000000000000000000000000000006100fa565b60408051808201909152600e81527f43616c6c6261636b4d6f64756c6500000000000000000000000000000000000060208201526100bd565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461020d576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152602081905260409020610226828483610819565b5061023283838361052b565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102a6576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006102b183610466565b9050806000015173ffffffffffffffffffffffffffffffffffffffff1681602001516040516102e09190610934565b6000604051808303816000865af19150503d806000811461031d576040519150601f19603f3d011682016040523d82523d6000602084013e610322565b606091505b505050806000015173ffffffffffffffffffffffffffffffffffffffff16837fd131974f482f422f20ac02414f7a54690924a59b94bf4d3e90ff57a042c708ed836020015160405161037491906106ec565b60405180910390a360405173ffffffffffffffffffffffffffffffffffffffff8316815283907f898b6025fbfa120421d24d3735eb8c51885040c2ba00c10ffe007e3356f058ff9060200160405180910390a2505050565b600060208190529081526040902080546103e590610778565b80601f016020809104026020016040519081016040528092919081815260200182805461041190610778565b801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b505050505081565b6040805180820190915260008152606060208201526000828152602081905260409020805461049490610778565b80601f01602080910402602001604051908101604052809291908181526020018280546104c090610778565b801561050d5780601f106104e25761010080835404028352916020019161050d565b820191906000526020600020905b8154815290600101906020018083116104f057829003601f168201915b50505050508060200190518101906105259190610a0e565b92915050565b600061053982840184610ad1565b805190915073ffffffffffffffffffffffffffffffffffffffff163b60000361058e576040517fefe8ac2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000806000604084860312156105a957600080fd5b83359250602084013567ffffffffffffffff808211156105c857600080fd5b818601915086601f8301126105dc57600080fd5b8135818111156105eb57600080fd5b8760208285010111156105fd57600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461063257600080fd5b50565b6000806040838503121561064857600080fd5b82359150602083013561065a81610610565b809150509250929050565b60006020828403121561067757600080fd5b5035919050565b60005b83811015610699578181015183820152602001610681565b50506000910152565b600081518084526106ba81602086016020860161067e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ff60208301846106a2565b9392505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526000602083015160408084015261074160608401826106a2565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061078c57607f821691505b6020821081036107c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561023257600081815260208120601f850160051c810160208610156107f25750805b601f850160051c820191505b81811015610811578281556001016107fe565b505050505050565b67ffffffffffffffff83111561083157610831610749565b6108458361083f8354610778565b836107cb565b6000601f84116001811461089757600085156108615750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561092d565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156108e657868501358255602094850194600190920191016108c6565b5086821015610921577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6000825161094681846020870161067e565b9190910192915050565b6040805190810167ffffffffffffffff8111828210171561097357610973610749565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109c0576109c0610749565b604052919050565b600067ffffffffffffffff8211156109e2576109e2610749565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006020808385031215610a2157600080fd5b825167ffffffffffffffff80821115610a3957600080fd5b9084019060408287031215610a4d57600080fd5b610a55610950565b8251610a6081610610565b81528284015182811115610a7357600080fd5b80840193505086601f840112610a8857600080fd5b82519150610a9d610a98836109c8565b610979565b8281528785848601011115610ab157600080fd5b610ac08386830187870161067e565b938101939093525090949350505050565b60006020808385031215610ae457600080fd5b823567ffffffffffffffff80821115610afc57600080fd5b9084019060408287031215610b1057600080fd5b610b18610950565b8235610b2381610610565b81528284013582811115610b3657600080fd5b80840193505086601f840112610b4b57600080fd5b82359150610b5b610a98836109c8565b8281528785848601011115610b6f57600080fd5b828585018683013760009281018501929092529283015250939250505056fea264697066735822122086e4731268b716bdecc844a44a9bffd0c55bc265f5e14713d5c0cac3daa19be564736f6c63430008130033",
    "sourceMap": "396:1244:45:-:0;;;451:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;353:16:0;;;396:1244:45;;14:306:113;100:6;153:2;141:9;132:7;128:23;124:32;121:52;;;169:1;166;159:12;121:52;195:16;;-1:-1:-1;;;;;240:31:113;;230:42;;220:70;;286:1;283;276:12;220:70;309:5;14:306;-1:-1:-1;;;14:306:113:o;:::-;396:1244:45;;;;;;;;;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806338013f021161005b57806338013f02146100d35780634d610a461461011f5780637dc0d1d01461013f57806393f0899a1461016557600080fd5b80632e76be2a14610082578063309de607146100975780633661346b146100aa575b600080fd5b610095610090366004610594565b61019e565b005b6100956100a5366004610635565b610237565b6100bd6100b8366004610665565b6103cc565b6040516100ca91906106ec565b60405180910390f35b6100fa7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ca565b61013261012d366004610665565b610466565b6040516100ca9190610706565b7f00000000000000000000000000000000000000000000000000000000000000006100fa565b60408051808201909152600e81527f43616c6c6261636b4d6f64756c6500000000000000000000000000000000000060208201526100bd565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461020d576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152602081905260409020610226828483610819565b5061023283838361052b565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102a6576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006102b183610466565b9050806000015173ffffffffffffffffffffffffffffffffffffffff1681602001516040516102e09190610934565b6000604051808303816000865af19150503d806000811461031d576040519150601f19603f3d011682016040523d82523d6000602084013e610322565b606091505b505050806000015173ffffffffffffffffffffffffffffffffffffffff16837fd131974f482f422f20ac02414f7a54690924a59b94bf4d3e90ff57a042c708ed836020015160405161037491906106ec565b60405180910390a360405173ffffffffffffffffffffffffffffffffffffffff8316815283907f898b6025fbfa120421d24d3735eb8c51885040c2ba00c10ffe007e3356f058ff9060200160405180910390a2505050565b600060208190529081526040902080546103e590610778565b80601f016020809104026020016040519081016040528092919081815260200182805461041190610778565b801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b505050505081565b6040805180820190915260008152606060208201526000828152602081905260409020805461049490610778565b80601f01602080910402602001604051908101604052809291908181526020018280546104c090610778565b801561050d5780601f106104e25761010080835404028352916020019161050d565b820191906000526020600020905b8154815290600101906020018083116104f057829003601f168201915b50505050508060200190518101906105259190610a0e565b92915050565b600061053982840184610ad1565b805190915073ffffffffffffffffffffffffffffffffffffffff163b60000361058e576040517fefe8ac2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000806000604084860312156105a957600080fd5b83359250602084013567ffffffffffffffff808211156105c857600080fd5b818601915086601f8301126105dc57600080fd5b8135818111156105eb57600080fd5b8760208285010111156105fd57600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461063257600080fd5b50565b6000806040838503121561064857600080fd5b82359150602083013561065a81610610565b809150509250929050565b60006020828403121561067757600080fd5b5035919050565b60005b83811015610699578181015183820152602001610681565b50506000910152565b600081518084526106ba81602086016020860161067e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ff60208301846106a2565b9392505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526000602083015160408084015261074160608401826106a2565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061078c57607f821691505b6020821081036107c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561023257600081815260208120601f850160051c810160208610156107f25750805b601f850160051c820191505b81811015610811578281556001016107fe565b505050505050565b67ffffffffffffffff83111561083157610831610749565b6108458361083f8354610778565b836107cb565b6000601f84116001811461089757600085156108615750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561092d565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156108e657868501358255602094850194600190920191016108c6565b5086821015610921577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6000825161094681846020870161067e565b9190910192915050565b6040805190810167ffffffffffffffff8111828210171561097357610973610749565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109c0576109c0610749565b604052919050565b600067ffffffffffffffff8211156109e2576109e2610749565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006020808385031215610a2157600080fd5b825167ffffffffffffffff80821115610a3957600080fd5b9084019060408287031215610a4d57600080fd5b610a55610950565b8251610a6081610610565b81528284015182811115610a7357600080fd5b80840193505086601f840112610a8857600080fd5b82519150610a9d610a98836109c8565b610979565b8281528785848601011115610ab157600080fd5b610ac08386830187870161067e565b938101939093525090949350505050565b60006020808385031215610ae457600080fd5b823567ffffffffffffffff80821115610afc57600080fd5b9084019060408287031215610b1057600080fd5b610b18610950565b8235610b2381610610565b81528284013582811115610b3657600080fd5b80840193505086601f840112610b4b57600080fd5b82359150610b5b610a98836109c8565b8281528785848601011115610b6f57600080fd5b828585018683013760009281018501929092529283015250939250505056fea264697066735822122086e4731268b716bdecc844a44a9bffd0c55bc265f5e14713d5c0cac3daa19be564736f6c63430008130033",
    "sourceMap": "396:1244:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:175:0;;;;;;:::i;:::-;;:::i;:::-;;1281:357:45;;;;;;:::i;:::-;;:::i;237:68:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;201:31;;;;;;;;2345:42:113;2333:55;;;2315:74;;2303:2;2288:18;201:31:0;2153:242:113;677:179:45;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;571:94:0:-;653:6;571:94;;528:111:45;604:30;;;;;;;;;;;;;;;;;528:111;;695:175:0;472:10;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;791:11:::1;:23:::0;;;::::1;::::0;;;;;;:31:::1;817:5:::0;;791:23;:31:::1;:::i;:::-;;828:37;847:10;859:5;;828:18;:37::i;:::-;695:175:::0;;;:::o;1281:357:45:-;472:10:0;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;1418:32:45::1;1453:29;1471:10;1453:17;:29::i;:::-;1418:64;;1488:7;:14;;;:19;;1508:7;:12;;;1488:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:7;:14;;;1532:50;;1541:10;1532:50;1569:7;:12;;;1532:50;;;;;;:::i;:::-;;;;;;;;1593:40;::::0;2345:42:113;2333:55;;2315:74;;1610:10:45;;1593:40:::1;::::0;2303:2:113;2288:18;1593:40:45::1;;;;;;;1412:226;1281:357:::0;;:::o;237:68:0:-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;677:179:45:-;-1:-1:-1;;;;;;;;;;;;;;;;;806:11:45;:23;;;;;;;;;;795:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;785:66;677:179;-1:-1:-1;;677:179:45:o;995:248::-;1083:32;1118:38;;;;1129:5;1118:38;:::i;:::-;1166:14;;1083:73;;-1:-1:-1;1166:26:45;;;:14;:31;1162:76;;1206:32;;;;;;;;;;;;;;1162:76;1077:166;995:248;;;:::o;14:659:113:-;93:6;101;109;162:2;150:9;141:7;137:23;133:32;130:52;;;178:1;175;168:12;130:52;214:9;201:23;191:33;;275:2;264:9;260:18;247:32;298:18;339:2;331:6;328:14;325:34;;;355:1;352;345:12;325:34;393:6;382:9;378:22;368:32;;438:7;431:4;427:2;423:13;419:27;409:55;;460:1;457;450:12;409:55;500:2;487:16;526:2;518:6;515:14;512:34;;;542:1;539;532:12;512:34;587:7;582:2;573:6;569:2;565:15;561:24;558:37;555:57;;;608:1;605;598:12;555:57;639:2;635;631:11;621:21;;661:6;651:16;;;;;14:659;;;;;:::o;678:154::-;764:42;757:5;753:54;746:5;743:65;733:93;;822:1;819;812:12;733:93;678:154;:::o;837:315::-;905:6;913;966:2;954:9;945:7;941:23;937:32;934:52;;;982:1;979;972:12;934:52;1018:9;1005:23;995:33;;1078:2;1067:9;1063:18;1050:32;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1131:15;;;837:315;;;;;:::o;1157:180::-;1216:6;1269:2;1257:9;1248:7;1244:23;1240:32;1237:52;;;1285:1;1282;1275:12;1237:52;-1:-1:-1;1308:23:113;;1157:180;-1:-1:-1;1157:180:113:o;1342:250::-;1427:1;1437:113;1451:6;1448:1;1445:13;1437:113;;;1527:11;;;1521:18;1508:11;;;1501:39;1473:2;1466:10;1437:113;;;-1:-1:-1;;1584:1:113;1566:16;;1559:27;1342:250::o;1597:329::-;1638:3;1676:5;1670:12;1703:6;1698:3;1691:19;1719:76;1788:6;1781:4;1776:3;1772:14;1765:4;1758:5;1754:16;1719:76;:::i;:::-;1840:2;1828:15;1845:66;1824:88;1815:98;;;;1915:4;1811:109;;1597:329;-1:-1:-1;;1597:329:113:o;1931:217::-;2078:2;2067:9;2060:21;2041:4;2098:44;2138:2;2127:9;2123:18;2115:6;2098:44;:::i;:::-;2090:52;1931:217;-1:-1:-1;;;1931:217:113:o;2400:470::-;2601:2;2590:9;2583:21;2659:42;2650:6;2644:13;2640:62;2635:2;2624:9;2620:18;2613:90;2564:4;2750:2;2742:6;2738:15;2732:22;2792:4;2785;2774:9;2770:20;2763:34;2814:50;2860:2;2849:9;2845:18;2831:12;2814:50;:::i;:::-;2806:58;2400:470;-1:-1:-1;;;;2400:470:113:o;3330:184::-;3382:77;3379:1;3372:88;3479:4;3476:1;3469:15;3503:4;3500:1;3493:15;3519:437;3598:1;3594:12;;;;3641;;;3662:61;;3716:4;3708:6;3704:17;3694:27;;3662:61;3769:2;3761:6;3758:14;3738:18;3735:38;3732:218;;3806:77;3803:1;3796:88;3907:4;3904:1;3897:15;3935:4;3932:1;3925:15;3732:218;;3519:437;;;:::o;4086:544::-;4187:2;4182:3;4179:11;4176:448;;;4223:1;4248:5;4244:2;4237:17;4293:4;4289:2;4279:19;4363:2;4351:10;4347:19;4344:1;4340:27;4334:4;4330:38;4399:4;4387:10;4384:20;4381:47;;;-1:-1:-1;4422:4:113;4381:47;4477:2;4472:3;4468:12;4465:1;4461:20;4455:4;4451:31;4441:41;;4532:82;4550:2;4543:5;4540:13;4532:82;;;4595:17;;;4576:1;4565:13;4532:82;;;4536:3;;;4086:544;;;:::o;4866:1321::-;4988:18;4983:3;4980:27;4977:53;;;5010:18;;:::i;:::-;5039:93;5128:3;5088:38;5120:4;5114:11;5088:38;:::i;:::-;5082:4;5039:93;:::i;:::-;5158:1;5183:2;5178:3;5175:11;5200:1;5195:734;;;;5973:1;5990:3;5987:93;;;-1:-1:-1;6046:19:113;;;6033:33;5987:93;4772:66;4763:1;4759:11;;;4755:84;4751:89;4741:100;4847:1;4843:11;;;4738:117;6093:78;;5168:1013;;5195:734;4033:1;4026:14;;;4070:4;4057:18;;5240:66;5231:76;;;5390:9;5412:229;5426:7;5423:1;5420:14;5412:229;;;5515:19;;;5502:33;5487:49;;5622:4;5607:20;;;;5575:1;5563:14;;;;5442:12;5412:229;;;5416:3;5669;5660:7;5657:16;5654:219;;;5789:66;5783:3;5777;5774:1;5770:11;5766:21;5762:94;5758:99;5745:9;5740:3;5736:19;5723:33;5719:139;5711:6;5704:155;5654:219;;;5916:1;5910:3;5907:1;5903:11;5899:19;5893:4;5886:33;5168:1013;;;4866:1321;;;:::o;6192:287::-;6321:3;6359:6;6353:13;6375:66;6434:6;6429:3;6422:4;6414:6;6410:17;6375:66;:::i;:::-;6457:16;;;;;6192:287;-1:-1:-1;;6192:287:113:o;6484:257::-;6556:4;6550:11;;;6588:17;;6635:18;6620:34;;6656:22;;;6617:62;6614:88;;;6682:18;;:::i;:::-;6718:4;6711:24;6484:257;:::o;6746:334::-;6817:2;6811:9;6873:2;6863:13;;6878:66;6859:86;6847:99;;6976:18;6961:34;;6997:22;;;6958:62;6955:88;;;7023:18;;:::i;:::-;7059:2;7052:22;6746:334;;-1:-1:-1;6746:334:113:o;7085:245::-;7133:4;7166:18;7158:6;7155:30;7152:56;;;7188:18;;:::i;:::-;-1:-1:-1;7245:2:113;7233:15;7250:66;7229:88;7319:4;7225:99;;7085:245::o;7335:1084::-;7441:6;7472:2;7515;7503:9;7494:7;7490:23;7486:32;7483:52;;;7531:1;7528;7521:12;7483:52;7564:9;7558:16;7593:18;7634:2;7626:6;7623:14;7620:34;;;7650:1;7647;7640:12;7620:34;7673:22;;;;7729:4;7711:16;;;7707:27;7704:47;;;7747:1;7744;7737:12;7704:47;7773:22;;:::i;:::-;7825:2;7819:9;7837:33;7862:7;7837:33;:::i;:::-;7879:22;;7932:11;;;7926:18;7956:16;;;7953:36;;;7985:1;7982;7975:12;7953:36;8016:8;8012:2;8008:17;7998:27;;;8063:7;8056:4;8052:2;8048:13;8044:27;8034:55;;8085:1;8082;8075:12;8034:55;8114:2;8108:9;8098:19;;8139:48;8155:31;8183:2;8155:31;:::i;:::-;8139:48;:::i;:::-;8210:2;8203:5;8196:17;8250:7;8245:2;8240;8236;8232:11;8228:20;8225:33;8222:53;;;8271:1;8268;8261:12;8222:53;8284:67;8348:2;8343;8336:5;8332:14;8327:2;8323;8319:11;8284:67;:::i;:::-;8367:14;;;8360:29;;;;-1:-1:-1;8371:5:113;;7335:1084;-1:-1:-1;;;;7335:1084:113:o;8424:1122::-;8519:6;8550:2;8593;8581:9;8572:7;8568:23;8564:32;8561:52;;;8609:1;8606;8599:12;8561:52;8649:9;8636:23;8678:18;8719:2;8711:6;8708:14;8705:34;;;8735:1;8732;8725:12;8705:34;8758:22;;;;8814:4;8796:16;;;8792:27;8789:47;;;8832:1;8829;8822:12;8789:47;8858:22;;:::i;:::-;8917:2;8904:16;8929:33;8954:7;8929:33;:::i;:::-;8971:22;;9031:11;;;9018:25;9055:16;;;9052:36;;;9084:1;9081;9074:12;9052:36;9115:8;9111:2;9107:17;9097:27;;;9162:7;9155:4;9151:2;9147:13;9143:27;9133:55;;9184:1;9181;9174:12;9133:55;9220:2;9207:16;9197:26;;9245:48;9261:31;9289:2;9261:31;:::i;9245:48::-;9316:2;9309:5;9302:17;9356:7;9351:2;9346;9342;9338:11;9334:20;9331:33;9328:53;;;9377:1;9374;9367:12;9328:53;9432:2;9427;9423;9419:11;9414:2;9407:5;9403:14;9390:45;9476:1;9455:14;;;9451:23;;9444:34;;;;9494:14;;;9487:29;-1:-1:-1;9498:5:113;8424:1122;-1:-1:-1;;;8424:1122:113:o",
    "linkReferences": {},
    "immutableReferences": {
      "10": [
        {
          "start": 216,
          "length": 32
        },
        {
          "start": 321,
          "length": 32
        },
        {
          "start": 438,
          "length": 32
        },
        {
          "start": 591,
          "length": 32
        }
      ]
    }
  },
  "methodIdentifiers": {
    "ORACLE()": "38013f02",
    "decodeRequestData(bytes32)": "4d610a46",
    "finalizeRequest(bytes32,address)": "309de607",
    "moduleName()": "93f0899a",
    "oracle()": "7dc0d1d0",
    "requestData(bytes32)": "3661346b",
    "setupRequest(bytes32,bytes)": "2e76be2a"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IOracle\",\"name\":\"_oracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallbackModule_TargetHasNoCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Module_OnlyOracle\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"Callback\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_finalizer\",\"type\":\"address\"}],\"name\":\"RequestFinalized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ORACLE\",\"outputs\":[{\"internalType\":\"contract IOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"decodeRequestData\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ICallbackModule.RequestParameters\",\"name\":\"_params\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_finalizer\",\"type\":\"address\"}],\"name\":\"finalizeRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moduleName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_moduleName\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"requestData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"_requestData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"setupRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Callback(bytes32,address,bytes)\":{\"params\":{\"_data\":\"The calldata forwarded to the _target\",\"_requestId\":\"The id of the request being finalized\",\"_target\":\"The target address for the callback\"}},\"RequestFinalized(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request that was finalized\"}}},\"kind\":\"dev\",\"methods\":{\"decodeRequestData(bytes32)\":{\"params\":{\"_requestId\":\"The ID of the request\"},\"returns\":{\"_params\":\"The struct containing the parameters for the request\"}},\"finalizeRequest(bytes32,address)\":{\"details\":\"The success of the callback call is purposely not checked\",\"params\":{\"_requestId\":\"The id of the request\"}},\"moduleName()\":{\"returns\":{\"_moduleName\":\"The name of the module.\"}},\"oracle()\":{\"returns\":{\"_oracle\":\"The address of the oracle\"}},\"setupRequest(bytes32,bytes)\":{\"params\":{\"_data\":\"The data of the request\",\"_requestId\":\"The ID of the request\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"CallbackModule_TargetHasNoCode()\":[{\"notice\":\"Thrown when the target address has no code (i.e. is not a contract)\"}],\"Module_OnlyOracle()\":[{\"notice\":\"Thrown when the caller is not the oracle\"}]},\"events\":{\"Callback(bytes32,address,bytes)\":{\"notice\":\"A callback has been executed\"},\"RequestFinalized(bytes32,address)\":{\"notice\":\"Emitted when a request is finalized\"}},\"kind\":\"user\",\"methods\":{\"decodeRequestData(bytes32)\":{\"notice\":\"Returns the decoded data for a request\"},\"finalizeRequest(bytes32,address)\":{\"notice\":\"Finalizes the request by executing the callback call on the target\"},\"moduleName()\":{\"notice\":\"Returns the name of the module.\"},\"oracle()\":{\"notice\":\"Returns the address of the oracle\"},\"requestData(bytes32)\":{\"notice\":\"Returns the data of the request associated with the provided id\"},\"setupRequest(bytes32,bytes)\":{\"notice\":\"Stores the request data and runs module-specific hooks\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/contracts/modules/finality/CallbackModule.sol\":\"CallbackModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@defi-wonderland/=node_modules/@defi-wonderland/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":solmate/=node_modules/solmate/src/\"]},\"sources\":{\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol\":{\"keccak256\":\"0xb528e0eea66984412d038db1edcbfe77ac642089975fae6b0b44e8be13319bbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e70d520407288d43d7c735fd7355502b514ba6feacaeb4a5dd86497e3f91eb41\",\"dweb:/ipfs/QmPXY7uXjnsFacp6VpL45bMrxCZGtQ8AAnecTXC9ASkpV7\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IModule.sol\":{\"keccak256\":\"0x72c2f68e8c2b749d9ae745269c706b137a640d6bd6f65f966238b547d61e3a05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4edb1aae7c4abd875d2da44a2dd83781c3c0a3d059edf2d1f2be1c44f865456f\",\"dweb:/ipfs/QmbEHy8tENha1ANEEZADpH4THmqC8aHyCXxFYPw4tS5mf4\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol\":{\"keccak256\":\"0x606262b4bb3b1447b1f6afef8a1b49088956b168a4b066f6f60da4712b95d3cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a763cdb6ba9f12a93e3d5238d6d3235c5c0c229df94793927f9d2abe00542823\",\"dweb:/ipfs/QmbAbfVyCiHvNvhHxc5r8tK5GUuVBATo15Ma5MirhZPtE6\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol\":{\"keccak256\":\"0x21707db43d55ba040893ef0ffefa7f9740c6e03b94d750637e6b2c047a16baa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae582ca2fdd6fc82c650333066c95a917221282ad7ef15ea62fb4a31e4ed864d\",\"dweb:/ipfs/QmdxvkpNCK46uYv31TxAtxCiRPSoxbT4hrs94WQfR4ctTM\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol\":{\"keccak256\":\"0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e\",\"dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/request/IRequestModule.sol\":{\"keccak256\":\"0xefa5dd3334a1676cca1c1860c66c16adb1e399917742476d15de8737b5cb0032\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://03bcff0500f4054b5f71b0badd1779f8dfaa7fc74fc64788991438a1d9d2d14d\",\"dweb:/ipfs/QmdDjbGPgBfbbyT26Xtt9uBD7nYnhSK43fa9skfuBrfjCc\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/resolution/IResolutionModule.sol\":{\"keccak256\":\"0x36e75a87661b234be605a7455c88eaf4e7cbc9f5b4ea08133dd6d9d5af8d6bc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://232536c4e8b2e9114035e57360976ff24931459fb22a026114d392d3e315ea67\",\"dweb:/ipfs/QmPYKU5RDGMqTZZzCCvVy7ssush4EQGgCCbzbeGpnejGno\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/response/IResponseModule.sol\":{\"keccak256\":\"0xd0610065a22a8d3323427d871a73b835e4d0dffb3afe4bb7e8bbee81b8b9ed1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c72dcbd36f11e87fc21c922684e5524f0c83830dc945ac92614ea1cd770a1bf\",\"dweb:/ipfs/QmfYnQfSDd2jS9QEAdpmDF6wVXWqitQpmJsSeEHs1mtUQP\"]},\"solidity/contracts/modules/finality/CallbackModule.sol\":{\"keccak256\":\"0xbf1450d144a0d270fb8b0c62635941c5e00ca9fe70fa10761dcc02ba829b27e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3fe08ecdbee23d06f684759d1818062e9041ae1fde7a76a5c7c7d1cd3bb1c544\",\"dweb:/ipfs/QmeettsCeCJVFNyubY5Pin2LG9vwjEPW736KdWsz65MCsj\"]},\"solidity/interfaces/modules/finality/ICallbackModule.sol\":{\"keccak256\":\"0xdcfd2e50347b7ca70e60fdd62dc596f1e87f0d75cf013a30380dc8f53380f1af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41faca3bb330c6d820b75ff1115d6b15a1b7354ddaa75cc1cc497bb944c14a0e\",\"dweb:/ipfs/QmUCYesYdxgvVotiq8nfe5c8uTTN7b9yvDAHDCSg9PZ1g6\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.19+commit.7dd6d404"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "contract IOracle",
              "name": "_oracle",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "CallbackModule_TargetHasNoCode"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Module_OnlyOracle"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "_target",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "bytes",
              "name": "_data",
              "type": "bytes",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Callback",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "RequestFinalized",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "ORACLE",
          "outputs": [
            {
              "internalType": "contract IOracle",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "decodeRequestData",
          "outputs": [
            {
              "internalType": "struct ICallbackModule.RequestParameters",
              "name": "_params",
              "type": "tuple",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "finalizeRequest"
        },
        {
          "inputs": [],
          "stateMutability": "pure",
          "type": "function",
          "name": "moduleName",
          "outputs": [
            {
              "internalType": "string",
              "name": "_moduleName",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "oracle",
          "outputs": [
            {
              "internalType": "address",
              "name": "_oracle",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "requestData",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "_requestData",
              "type": "bytes"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "_data",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setupRequest"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "decodeRequestData(bytes32)": {
            "params": {
              "_requestId": "The ID of the request"
            },
            "returns": {
              "_params": "The struct containing the parameters for the request"
            }
          },
          "finalizeRequest(bytes32,address)": {
            "details": "The success of the callback call is purposely not checked",
            "params": {
              "_requestId": "The id of the request"
            }
          },
          "moduleName()": {
            "returns": {
              "_moduleName": "The name of the module."
            }
          },
          "oracle()": {
            "returns": {
              "_oracle": "The address of the oracle"
            }
          },
          "setupRequest(bytes32,bytes)": {
            "params": {
              "_data": "The data of the request",
              "_requestId": "The ID of the request"
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "decodeRequestData(bytes32)": {
            "notice": "Returns the decoded data for a request"
          },
          "finalizeRequest(bytes32,address)": {
            "notice": "Finalizes the request by executing the callback call on the target"
          },
          "moduleName()": {
            "notice": "Returns the name of the module."
          },
          "oracle()": {
            "notice": "Returns the address of the oracle"
          },
          "requestData(bytes32)": {
            "notice": "Returns the data of the request associated with the provided id"
          },
          "setupRequest(bytes32,bytes)": {
            "notice": "Stores the request data and runs module-specific hooks"
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@defi-wonderland/=node_modules/@defi-wonderland/",
        "@openzeppelin/=node_modules/@openzeppelin/",
        "ds-test/=node_modules/ds-test/src/",
        "forge-std/=node_modules/forge-std/src/",
        "solmate/=node_modules/solmate/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 10000
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "solidity/contracts/modules/finality/CallbackModule.sol": "CallbackModule"
      },
      "libraries": {}
    },
    "sources": {
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol": {
        "keccak256": "0xb528e0eea66984412d038db1edcbfe77ac642089975fae6b0b44e8be13319bbf",
        "urls": [
          "bzz-raw://e70d520407288d43d7c735fd7355502b514ba6feacaeb4a5dd86497e3f91eb41",
          "dweb:/ipfs/QmPXY7uXjnsFacp6VpL45bMrxCZGtQ8AAnecTXC9ASkpV7"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IModule.sol": {
        "keccak256": "0x72c2f68e8c2b749d9ae745269c706b137a640d6bd6f65f966238b547d61e3a05",
        "urls": [
          "bzz-raw://4edb1aae7c4abd875d2da44a2dd83781c3c0a3d059edf2d1f2be1c44f865456f",
          "dweb:/ipfs/QmbEHy8tENha1ANEEZADpH4THmqC8aHyCXxFYPw4tS5mf4"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol": {
        "keccak256": "0x606262b4bb3b1447b1f6afef8a1b49088956b168a4b066f6f60da4712b95d3cf",
        "urls": [
          "bzz-raw://a763cdb6ba9f12a93e3d5238d6d3235c5c0c229df94793927f9d2abe00542823",
          "dweb:/ipfs/QmbAbfVyCiHvNvhHxc5r8tK5GUuVBATo15Ma5MirhZPtE6"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol": {
        "keccak256": "0x21707db43d55ba040893ef0ffefa7f9740c6e03b94d750637e6b2c047a16baa4",
        "urls": [
          "bzz-raw://ae582ca2fdd6fc82c650333066c95a917221282ad7ef15ea62fb4a31e4ed864d",
          "dweb:/ipfs/QmdxvkpNCK46uYv31TxAtxCiRPSoxbT4hrs94WQfR4ctTM"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol": {
        "keccak256": "0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e",
        "urls": [
          "bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e",
          "dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/request/IRequestModule.sol": {
        "keccak256": "0xefa5dd3334a1676cca1c1860c66c16adb1e399917742476d15de8737b5cb0032",
        "urls": [
          "bzz-raw://03bcff0500f4054b5f71b0badd1779f8dfaa7fc74fc64788991438a1d9d2d14d",
          "dweb:/ipfs/QmdDjbGPgBfbbyT26Xtt9uBD7nYnhSK43fa9skfuBrfjCc"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/resolution/IResolutionModule.sol": {
        "keccak256": "0x36e75a87661b234be605a7455c88eaf4e7cbc9f5b4ea08133dd6d9d5af8d6bc6",
        "urls": [
          "bzz-raw://232536c4e8b2e9114035e57360976ff24931459fb22a026114d392d3e315ea67",
          "dweb:/ipfs/QmPYKU5RDGMqTZZzCCvVy7ssush4EQGgCCbzbeGpnejGno"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/response/IResponseModule.sol": {
        "keccak256": "0xd0610065a22a8d3323427d871a73b835e4d0dffb3afe4bb7e8bbee81b8b9ed1b",
        "urls": [
          "bzz-raw://8c72dcbd36f11e87fc21c922684e5524f0c83830dc945ac92614ea1cd770a1bf",
          "dweb:/ipfs/QmfYnQfSDd2jS9QEAdpmDF6wVXWqitQpmJsSeEHs1mtUQP"
        ],
        "license": "MIT"
      },
      "solidity/contracts/modules/finality/CallbackModule.sol": {
        "keccak256": "0xbf1450d144a0d270fb8b0c62635941c5e00ca9fe70fa10761dcc02ba829b27e5",
        "urls": [
          "bzz-raw://3fe08ecdbee23d06f684759d1818062e9041ae1fde7a76a5c7c7d1cd3bb1c544",
          "dweb:/ipfs/QmeettsCeCJVFNyubY5Pin2LG9vwjEPW736KdWsz65MCsj"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/modules/finality/ICallbackModule.sol": {
        "keccak256": "0xdcfd2e50347b7ca70e60fdd62dc596f1e87f0d75cf013a30380dc8f53380f1af",
        "urls": [
          "bzz-raw://41faca3bb330c6d820b75ff1115d6b15a1b7354ddaa75cc1cc497bb944c14a0e",
          "dweb:/ipfs/QmUCYesYdxgvVotiq8nfe5c8uTTN7b9yvDAHDCSg9PZ1g6"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "solidity/contracts/modules/finality/CallbackModule.sol",
    "id": 37885,
    "exportedSymbols": {
      "CallbackModule": [
        37884
      ],
      "ICallbackModule": [
        43244
      ],
      "IModule": [
        1782
      ],
      "IOracle": [
        2282
      ],
      "Module": [
        98
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:1609:45",
    "nodes": [
      {
        "id": 37757,
        "nodeType": "PragmaDirective",
        "src": "32:24:45",
        "nodes": [],
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ]
      },
      {
        "id": 37760,
        "nodeType": "ImportDirective",
        "src": "104:102:45",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol",
        "file": "@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 37885,
        "sourceUnit": 99,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37758,
              "name": "Module",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 98,
              "src": "112:6:45",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 37759,
              "name": "IModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 1782,
              "src": "120:7:45",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 37762,
        "nodeType": "ImportDirective",
        "src": "207:96:45",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol",
        "file": "@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 37885,
        "sourceUnit": 2283,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37761,
              "name": "IOracle",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2282,
              "src": "215:7:45",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 37764,
        "nodeType": "ImportDirective",
        "src": "305:89:45",
        "nodes": [],
        "absolutePath": "solidity/interfaces/modules/finality/ICallbackModule.sol",
        "file": "../../../interfaces/modules/finality/ICallbackModule.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 37885,
        "sourceUnit": 43245,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37763,
              "name": "ICallbackModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 43244,
              "src": "313:15:45",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 37884,
        "nodeType": "ContractDefinition",
        "src": "396:1244:45",
        "nodes": [
          {
            "id": 37778,
            "nodeType": "FunctionDefinition",
            "src": "451:47:45",
            "nodes": [],
            "body": {
              "id": 37777,
              "nodeType": "Block",
              "src": "496:2:45",
              "nodes": [],
              "statements": []
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 37774,
                    "name": "_oracle",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 37771,
                    "src": "487:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  }
                ],
                "id": 37775,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 37773,
                  "name": "Module",
                  "nameLocations": [
                    "480:6:45"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 98,
                  "src": "480:6:45"
                },
                "nodeType": "ModifierInvocation",
                "src": "480:15:45"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 37772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37771,
                  "mutability": "mutable",
                  "name": "_oracle",
                  "nameLocation": "471:7:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 37778,
                  "src": "463:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IOracle_$2282",
                    "typeString": "contract IOracle"
                  },
                  "typeName": {
                    "id": 37770,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 37769,
                      "name": "IOracle",
                      "nameLocations": [
                        "463:7:45"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2282,
                      "src": "463:7:45"
                    },
                    "referencedDeclaration": 2282,
                    "src": "463:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "462:17:45"
            },
            "returnParameters": {
              "id": 37776,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "496:0:45"
            },
            "scope": 37884,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37789,
            "nodeType": "FunctionDefinition",
            "src": "528:111:45",
            "nodes": [],
            "body": {
              "id": 37788,
              "nodeType": "Block",
              "src": "598:41:45",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 37786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 37784,
                      "name": "_moduleName",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37782,
                      "src": "604:11:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "43616c6c6261636b4d6f64756c65",
                      "id": 37785,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "618:16:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_f86bd836f0f67e38f7fa72ee14530be201cb450cbc4f7cd20adc3f0e0616f334",
                        "typeString": "literal_string \"CallbackModule\""
                      },
                      "value": "CallbackModule"
                    },
                    "src": "604:30:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 37787,
                  "nodeType": "ExpressionStatement",
                  "src": "604:30:45"
                }
              ]
            },
            "baseFunctions": [
              1781
            ],
            "documentation": {
              "id": 37779,
              "nodeType": "StructuredDocumentation",
              "src": "502:23:45",
              "text": "@inheritdoc IModule"
            },
            "functionSelector": "93f0899a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "moduleName",
            "nameLocation": "537:10:45",
            "parameters": {
              "id": 37780,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "547:2:45"
            },
            "returnParameters": {
              "id": 37783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37782,
                  "mutability": "mutable",
                  "name": "_moduleName",
                  "nameLocation": "585:11:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 37789,
                  "src": "571:25:45",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 37781,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "571:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "570:27:45"
            },
            "scope": 37884,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37810,
            "nodeType": "FunctionDefinition",
            "src": "677:179:45",
            "nodes": [],
            "body": {
              "id": 37809,
              "nodeType": "Block",
              "src": "779:77:45",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 37807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 37798,
                      "name": "_params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37796,
                      "src": "785:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                        "typeString": "struct ICallbackModule.RequestParameters memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 37801,
                            "name": "requestData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14,
                            "src": "806:11:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes32 => bytes storage ref)"
                            }
                          },
                          "id": 37803,
                          "indexExpression": {
                            "id": 37802,
                            "name": "_requestId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37792,
                            "src": "818:10:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "806:23:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        {
                          "components": [
                            {
                              "id": 37804,
                              "name": "RequestParameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43226,
                              "src": "832:17:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43226_storage_ptr_$",
                                "typeString": "type(struct ICallbackModule.RequestParameters storage pointer)"
                              }
                            }
                          ],
                          "id": 37805,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "831:19:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43226_storage_ptr_$",
                            "typeString": "type(struct ICallbackModule.RequestParameters storage pointer)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          },
                          {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43226_storage_ptr_$",
                            "typeString": "type(struct ICallbackModule.RequestParameters storage pointer)"
                          }
                        ],
                        "expression": {
                          "id": 37799,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -1,
                          "src": "795:3:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 37800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "799:6:45",
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "795:10:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 37806,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "795:56:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                        "typeString": "struct ICallbackModule.RequestParameters memory"
                      }
                    },
                    "src": "785:66:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                      "typeString": "struct ICallbackModule.RequestParameters memory"
                    }
                  },
                  "id": 37808,
                  "nodeType": "ExpressionStatement",
                  "src": "785:66:45"
                }
              ]
            },
            "baseFunctions": [
              43235
            ],
            "documentation": {
              "id": 37790,
              "nodeType": "StructuredDocumentation",
              "src": "643:31:45",
              "text": "@inheritdoc ICallbackModule"
            },
            "functionSelector": "4d610a46",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decodeRequestData",
            "nameLocation": "686:17:45",
            "parameters": {
              "id": 37793,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37792,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "712:10:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 37810,
                  "src": "704:18:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 37791,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "704:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "703:20:45"
            },
            "returnParameters": {
              "id": 37797,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37796,
                  "mutability": "mutable",
                  "name": "_params",
                  "nameLocation": "770:7:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 37810,
                  "src": "745:32:45",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                    "typeString": "struct ICallbackModule.RequestParameters"
                  },
                  "typeName": {
                    "id": 37795,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 37794,
                      "name": "RequestParameters",
                      "nameLocations": [
                        "745:17:45"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 43226,
                      "src": "745:17:45"
                    },
                    "referencedDeclaration": 43226,
                    "src": "745:17:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43226_storage_ptr",
                      "typeString": "struct ICallbackModule.RequestParameters"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "744:34:45"
            },
            "scope": 37884,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37840,
            "nodeType": "FunctionDefinition",
            "src": "995:248:45",
            "nodes": [],
            "body": {
              "id": 37839,
              "nodeType": "Block",
              "src": "1077:166:45",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    37821
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37821,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "1108:7:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 37839,
                      "src": "1083:32:45",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                        "typeString": "struct ICallbackModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 37820,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 37819,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "1083:17:45"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43226,
                          "src": "1083:17:45"
                        },
                        "referencedDeclaration": 43226,
                        "src": "1083:17:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43226_storage_ptr",
                          "typeString": "struct ICallbackModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37828,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37824,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37815,
                        "src": "1129:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 37825,
                            "name": "RequestParameters",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43226,
                            "src": "1137:17:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43226_storage_ptr_$",
                              "typeString": "type(struct ICallbackModule.RequestParameters storage pointer)"
                            }
                          }
                        ],
                        "id": 37826,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1136:19:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43226_storage_ptr_$",
                          "typeString": "type(struct ICallbackModule.RequestParameters storage pointer)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43226_storage_ptr_$",
                          "typeString": "type(struct ICallbackModule.RequestParameters storage pointer)"
                        }
                      ],
                      "expression": {
                        "id": 37822,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1118:3:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 37823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "1122:6:45",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1118:10:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 37827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1118:38:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                      "typeString": "struct ICallbackModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1083:73:45"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 37834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "expression": {
                            "id": 37829,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37821,
                            "src": "1166:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                              "typeString": "struct ICallbackModule.RequestParameters memory"
                            }
                          },
                          "id": 37830,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1174:6:45",
                          "memberName": "target",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 43223,
                          "src": "1166:14:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 37831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1181:4:45",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "1166:19:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 37832,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1186:6:45",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "1166:26:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 37833,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1196:1:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1166:31:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 37838,
                  "nodeType": "IfStatement",
                  "src": "1162:76:45",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 37835,
                        "name": "CallbackModule_TargetHasNoCode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43221,
                        "src": "1206:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 37836,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1206:32:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 37837,
                    "nodeType": "RevertStatement",
                    "src": "1199:39:45"
                  }
                }
              ]
            },
            "baseFunctions": [
              97
            ],
            "documentation": {
              "id": 37811,
              "nodeType": "StructuredDocumentation",
              "src": "860:132:45",
              "text": " @notice Checks if the target address has code (i.e. is a contract)\n @param _data The encoded data for the request"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterSetupRequest",
            "nameLocation": "1004:18:45",
            "overrides": {
              "id": 37817,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1068:8:45"
            },
            "parameters": {
              "id": 37816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37813,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 37840,
                  "src": "1023:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 37812,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1023:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37815,
                  "mutability": "mutable",
                  "name": "_data",
                  "nameLocation": "1047:5:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 37840,
                  "src": "1032:20:45",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 37814,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1032:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1022:31:45"
            },
            "returnParameters": {
              "id": 37818,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1077:0:45"
            },
            "scope": 37884,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 37883,
            "nodeType": "FunctionDefinition",
            "src": "1281:357:45",
            "nodes": [],
            "body": {
              "id": 37882,
              "nodeType": "Block",
              "src": "1412:226:45",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    37855
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37855,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "1443:7:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 37882,
                      "src": "1418:32:45",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                        "typeString": "struct ICallbackModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 37854,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 37853,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "1418:17:45"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43226,
                          "src": "1418:17:45"
                        },
                        "referencedDeclaration": 43226,
                        "src": "1418:17:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43226_storage_ptr",
                          "typeString": "struct ICallbackModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37859,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37857,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37843,
                        "src": "1471:10:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 37856,
                      "name": "decodeRequestData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37810,
                      "src": "1453:17:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_RequestParameters_$43226_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct ICallbackModule.RequestParameters memory)"
                      }
                    },
                    "id": 37858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1453:29:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                      "typeString": "struct ICallbackModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1418:64:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 37865,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37855,
                          "src": "1508:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                            "typeString": "struct ICallbackModule.RequestParameters memory"
                          }
                        },
                        "id": 37866,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1516:4:45",
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43225,
                        "src": "1508:12:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 37860,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37855,
                          "src": "1488:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                            "typeString": "struct ICallbackModule.RequestParameters memory"
                          }
                        },
                        "id": 37863,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1496:6:45",
                        "memberName": "target",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43223,
                        "src": "1488:14:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 37864,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1503:4:45",
                      "memberName": "call",
                      "nodeType": "MemberAccess",
                      "src": "1488:19:45",
                      "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": 37867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1488:33:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "id": 37868,
                  "nodeType": "ExpressionStatement",
                  "src": "1488:33:45"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 37870,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37843,
                        "src": "1541:10:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 37871,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37855,
                          "src": "1553:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                            "typeString": "struct ICallbackModule.RequestParameters memory"
                          }
                        },
                        "id": 37872,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1561:6:45",
                        "memberName": "target",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43223,
                        "src": "1553:14:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "id": 37873,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37855,
                          "src": "1569:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                            "typeString": "struct ICallbackModule.RequestParameters memory"
                          }
                        },
                        "id": 37874,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1577:4:45",
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43225,
                        "src": "1569:12:45",
                        "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": 37869,
                      "name": "Callback",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 43218,
                      "src": "1532:8:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,address,bytes memory)"
                      }
                    },
                    "id": 37875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1532:50:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37876,
                  "nodeType": "EmitStatement",
                  "src": "1527:55:45"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 37878,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37843,
                        "src": "1610:10:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 37879,
                        "name": "_finalizer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37845,
                        "src": "1622:10:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 37877,
                      "name": "RequestFinalized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1742,
                      "src": "1593:16:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 37880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1593:40:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37881,
                  "nodeType": "EmitStatement",
                  "src": "1588:45:45"
                }
              ]
            },
            "baseFunctions": [
              88,
              43243
            ],
            "documentation": {
              "id": 37841,
              "nodeType": "StructuredDocumentation",
              "src": "1247:31:45",
              "text": "@inheritdoc ICallbackModule"
            },
            "functionSelector": "309de607",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 37851,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 37850,
                  "name": "onlyOracle",
                  "nameLocations": [
                    "1401:10:45"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 41,
                  "src": "1401:10:45"
                },
                "nodeType": "ModifierInvocation",
                "src": "1401:10:45"
              }
            ],
            "name": "finalizeRequest",
            "nameLocation": "1290:15:45",
            "overrides": {
              "id": 37849,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 37847,
                  "name": "Module",
                  "nameLocations": [
                    "1376:6:45"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 98,
                  "src": "1376:6:45"
                },
                {
                  "id": 37848,
                  "name": "ICallbackModule",
                  "nameLocations": [
                    "1384:15:45"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 43244,
                  "src": "1384:15:45"
                }
              ],
              "src": "1367:33:45"
            },
            "parameters": {
              "id": 37846,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37843,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "1319:10:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 37883,
                  "src": "1311:18:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 37842,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1311:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37845,
                  "mutability": "mutable",
                  "name": "_finalizer",
                  "nameLocation": "1343:10:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 37883,
                  "src": "1335:18:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 37844,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1335:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1305:52:45"
            },
            "returnParameters": {
              "id": 37852,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1412:0:45"
            },
            "scope": 37884,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 37765,
              "name": "Module",
              "nameLocations": [
                "423:6:45"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 98,
              "src": "423:6:45"
            },
            "id": 37766,
            "nodeType": "InheritanceSpecifier",
            "src": "423:6:45"
          },
          {
            "baseName": {
              "id": 37767,
              "name": "ICallbackModule",
              "nameLocations": [
                "431:15:45"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 43244,
              "src": "431:15:45"
            },
            "id": 37768,
            "nodeType": "InheritanceSpecifier",
            "src": "431:15:45"
          }
        ],
        "canonicalName": "CallbackModule",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          37884,
          43244,
          2353,
          98,
          1782
        ],
        "name": "CallbackModule",
        "nameLocation": "405:14:45",
        "scope": 37885,
        "usedErrors": [
          1745,
          43221
        ]
      }
    ],
    "license": "MIT"
  },
  "id": 45
}