{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IOracle",
          "name": "_oracle",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ERC20ResolutionModule_AlreadyResolved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20ResolutionModule_DisputeNotEscalated",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20ResolutionModule_NonExistentDispute",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20ResolutionModule_OnGoingVotingPhase",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20ResolutionModule_OnlyDisputeModule",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20ResolutionModule_UnresolvedDispute",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20ResolutionModule_VotingPhaseOver",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Module_OnlyOracle",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum IOracle.DisputeStatus",
          "name": "_status",
          "type": "uint8"
        }
      ],
      "name": "DisputeResolved",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "ResolutionStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_numberOfVotes",
          "type": "uint256"
        }
      ],
      "name": "VoteCast",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_startTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "VotingPhaseStarted",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ORACLE",
      "outputs": [
        {
          "internalType": "contract IOracle",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_numberOfVotes",
          "type": "uint256"
        }
      ],
      "name": "castVote",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "decodeRequestData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "contract IERC20",
              "name": "votingToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "minVotesForQuorum",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "timeUntilDeadline",
              "type": "uint256"
            }
          ],
          "internalType": "struct IERC20ResolutionModule.RequestParameters",
          "name": "_params",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "escalations",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalVotes",
          "type": "uint256"
        }
      ],
      "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": [
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "getVoters",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "__voters",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "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": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "resolveDispute",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "setupRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "startResolution",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "votes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_numOfVotes",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60a060405234801561001057600080fd5b50604051611a78380380611a7883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516119ae6100ca6000396000818161013a0152818161020a01528181610311015281816103a0015281816105b1015281816108890152818161091201528181610b6701528181610c510152610d9401526119ae6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80637dc0d1d01161008c5780639386775a116100665780639386775a1461026157806393f0899a1461029a578063c8218e3e146102d3578063d96dd0e7146102e657600080fd5b80637dc0d1d0146102085780637e89ff591461022e5780638b4a781c1461024157600080fd5b806338013f02116100bd57806338013f02146101355780634cf3ad6a146101815780634d610a46146101bd57600080fd5b80632e76be2a146100e4578063309de607146100f95780633661346b1461010c575b600080fd5b6100f76100f2366004611371565b6102f9565b005b6100f7610107366004611412565b610388565b61011f61011a366004611442565b6103fb565b60405161012c91906114c9565b60405180910390f35b61015c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012c565b6101a861018f366004611442565b6001602081905260009182526040909120805491015482565b6040805192835260208301919091520161012c565b6101d06101cb366004611442565b610495565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015190820152918101519082015260600161012c565b7f000000000000000000000000000000000000000000000000000000000000000061015c565b6100f761023c3660046114dc565b61057f565b61025461024f366004611442565b610857565b60405161012c9190611508565b61028c61026f366004611412565b600260209081526000928352604080842090915290825290205481565b60405190815260200161012c565b60408051808201909152601581527f45524332305265736f6c7574696f6e4d6f64756c650000000000000000000000602082015261011f565b6100f76102e1366004611442565b610871565b6100f76102f4366004611442565b610d7c565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610368576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152602081905260409020610381828483611632565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146103f7576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000602081905290815260409020805461041490611591565b80601f016020809104026020016040519081016040528092919081815260200182805461044090611591565b801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b505050505081565b6104cf6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b600082815260208190526040902080546104e890611591565b80601f016020809104026020016040519081016040528092919081815260200182805461051490611591565b80156105615780601f1061053657610100808354040283529160200191610561565b820191906000526020600020905b81548152906001019060200180831161054457829003601f168201915b5050505050806020019051810190610579919061174d565b92915050565b6040517f136ba6aa000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063136ba6aa9060240160c060405180830381865afa15801561060d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063191906117af565b805190915060000361066f576040517f331281ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160a00151600581111561068757610687611845565b146106be576040517f9ce14ad800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526001602081815260408084208151808301909252805480835293015491810191909152910361071e576040517f67508af700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061072986610495565b90506000816040015183600001516107419190611874565b905080421061077c576040517f03ae985000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000868152600260209081526040808320338452909152812080548792906107a5908490611874565b909155505060008681526003602052604090206107c29033610e3b565b50600086815260016020819052604082200180548792906107e4908490611874565b9091555050815161080d9073ffffffffffffffffffffffffffffffffffffffff16333088610e64565b60408051338152602081018890529081018690527f8a8d045e59db450e37332bff1c939e63cc4f4388c2c11f1cb07ad1f53c1ca0669060600160405180910390a150505050505050565b600081815260036020526040902060609061057990610f40565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108e0576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f136ba6aa000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063136ba6aa9060240160c060405180830381865afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099291906117af565b80519091506000036109d0576040517f331281ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160a0015160058111156109e8576109e8611845565b14610a1f576040517f9ce14ad800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020818152604080842081518083019092528054808352930154918101919091529103610a7f576040517f67508af700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a8e8360800151610495565b9050600081604001518360000151610aa69190611874565b905080421015610ae2576040517fbaee697400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826020015184602001511015610afb576000610afe565b60015b60ff1690506000610b2060036000898152602001908152602001600020610f40565b905081600103610c14576040517f0c1d0c2300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c1d0c2390610b9f908a906003906004016118e9565b600060405180830381600087803b158015610bb957600080fd5b505af1158015610bcd573d6000803e3d6000fd5b505050508686608001517facf2c682b2b1589bd6e7b4d197866c0cec809c4bb9b5d48faa792f61119c21746003604051610c0791906118fd565b60405180910390a3610cf9565b6040517f0c1d0c2300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c1d0c2390610c88908a9060049081016118e9565b600060405180830381600087803b158015610ca257600080fd5b505af1158015610cb6573d6000803e3d6000fd5b505050508686608001517facf2c682b2b1589bd6e7b4d197866c0cec809c4bb9b5d48faa792f61119c21746004604051610cf091906118fd565b60405180910390a35b805160005b81811015610d71576000838281518110610d1a57610d1a61190b565b60209081029190910181015160008c815260028352604080822073ffffffffffffffffffffffffffffffffffffffff808516845294529020548951919350610d689291909116908390610f4d565b50600101610cfe565b505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610deb576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020908152604091829020429081905582519081529081018390527f532680bb50b0fe07743261de306827730052801e83a716ab9d83d411ba474291910160405180910390a150565b6000610e5d8373ffffffffffffffffffffffffffffffffffffffff8416610fa3565b9392505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103819085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610ff2565b60606000610e5d83611106565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103839084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610ebe565b6000818152600183016020526040812054610fea57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610579565b506000610579565b6000611054826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111629092919063ffffffff16565b9050805160001480611075575080806020019051810190611075919061193a565b610383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60608160000180548060200260200160405190810160405280929190818152602001828054801561115657602002820191906000526020600020905b815481526020019060010190808311611142575b50505050509050919050565b60606111718484600085611179565b949350505050565b60608247101561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016110fd565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611234919061195c565b60006040518083038185875af1925050503d8060008114611271576040519150601f19603f3d011682016040523d82523d6000602084013e611276565b606091505b509150915061128787838387611292565b979650505050505050565b606083156113285782516000036113215773ffffffffffffffffffffffffffffffffffffffff85163b611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016110fd565b5081611171565b611171838381511561133d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd91906114c9565b60008060006040848603121561138657600080fd5b83359250602084013567ffffffffffffffff808211156113a557600080fd5b818601915086601f8301126113b957600080fd5b8135818111156113c857600080fd5b8760208285010111156113da57600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461140f57600080fd5b50565b6000806040838503121561142557600080fd5b823591506020830135611437816113ed565b809150509250929050565b60006020828403121561145457600080fd5b5035919050565b60005b8381101561147657818101518382015260200161145e565b50506000910152565b6000815180845261149781602086016020860161145b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e5d602083018461147f565b6000806000606084860312156114f157600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b8181101561155657835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611524565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c908216806115a557607f821691505b6020821081036115de577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561038357600081815260208120601f850160051c8101602086101561160b5750805b601f850160051c820191505b8181101561162a57828155600101611617565b505050505050565b67ffffffffffffffff83111561164a5761164a611562565b61165e836116588354611591565b836115e4565b6000601f8411600181146116b0576000851561167a5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611746565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156116ff57868501358255602094850194600190920191016116df565b508682101561173a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60006060828403121561175f57600080fd5b6040516060810181811067ffffffffffffffff8211171561178257611782611562565b6040528251611790816113ed565b8152602083810151908201526040928301519281019290925250919050565b600060c082840312156117c157600080fd5b60405160c0810181811067ffffffffffffffff821117156117e4576117e4611562565b6040528251815260208301516117f9816113ed565b6020820152604083015161180c816113ed565b80604083015250606083015160608201526080830151608082015260a08301516006811061183957600080fd5b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b80820180821115610579577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600681106118e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b82815260408101610e5d60208301846118ae565b6020810161057982846118ae565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561194c57600080fd5b81518015158114610e5d57600080fd5b6000825161196e81846020870161145b565b919091019291505056fea2646970667358221220d3680178cced230b8a03746a7596a2b215aa2d3279d1e5b34bc9b19c0de9a4fa64736f6c63430008130033",
    "sourceMap": "700:4161:52:-:0;;;1193:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;353:16:0;;;700:4161:52;;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;:::-;700:4161:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80637dc0d1d01161008c5780639386775a116100665780639386775a1461026157806393f0899a1461029a578063c8218e3e146102d3578063d96dd0e7146102e657600080fd5b80637dc0d1d0146102085780637e89ff591461022e5780638b4a781c1461024157600080fd5b806338013f02116100bd57806338013f02146101355780634cf3ad6a146101815780634d610a46146101bd57600080fd5b80632e76be2a146100e4578063309de607146100f95780633661346b1461010c575b600080fd5b6100f76100f2366004611371565b6102f9565b005b6100f7610107366004611412565b610388565b61011f61011a366004611442565b6103fb565b60405161012c91906114c9565b60405180910390f35b61015c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012c565b6101a861018f366004611442565b6001602081905260009182526040909120805491015482565b6040805192835260208301919091520161012c565b6101d06101cb366004611442565b610495565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015190820152918101519082015260600161012c565b7f000000000000000000000000000000000000000000000000000000000000000061015c565b6100f761023c3660046114dc565b61057f565b61025461024f366004611442565b610857565b60405161012c9190611508565b61028c61026f366004611412565b600260209081526000928352604080842090915290825290205481565b60405190815260200161012c565b60408051808201909152601581527f45524332305265736f6c7574696f6e4d6f64756c650000000000000000000000602082015261011f565b6100f76102e1366004611442565b610871565b6100f76102f4366004611442565b610d7c565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610368576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152602081905260409020610381828483611632565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146103f7576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000602081905290815260409020805461041490611591565b80601f016020809104026020016040519081016040528092919081815260200182805461044090611591565b801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b505050505081565b6104cf6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b600082815260208190526040902080546104e890611591565b80601f016020809104026020016040519081016040528092919081815260200182805461051490611591565b80156105615780601f1061053657610100808354040283529160200191610561565b820191906000526020600020905b81548152906001019060200180831161054457829003601f168201915b5050505050806020019051810190610579919061174d565b92915050565b6040517f136ba6aa000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063136ba6aa9060240160c060405180830381865afa15801561060d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063191906117af565b805190915060000361066f576040517f331281ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160a00151600581111561068757610687611845565b146106be576040517f9ce14ad800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526001602081815260408084208151808301909252805480835293015491810191909152910361071e576040517f67508af700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061072986610495565b90506000816040015183600001516107419190611874565b905080421061077c576040517f03ae985000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000868152600260209081526040808320338452909152812080548792906107a5908490611874565b909155505060008681526003602052604090206107c29033610e3b565b50600086815260016020819052604082200180548792906107e4908490611874565b9091555050815161080d9073ffffffffffffffffffffffffffffffffffffffff16333088610e64565b60408051338152602081018890529081018690527f8a8d045e59db450e37332bff1c939e63cc4f4388c2c11f1cb07ad1f53c1ca0669060600160405180910390a150505050505050565b600081815260036020526040902060609061057990610f40565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108e0576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f136ba6aa000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063136ba6aa9060240160c060405180830381865afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099291906117af565b80519091506000036109d0576040517f331281ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160a0015160058111156109e8576109e8611845565b14610a1f576040517f9ce14ad800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020818152604080842081518083019092528054808352930154918101919091529103610a7f576040517f67508af700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a8e8360800151610495565b9050600081604001518360000151610aa69190611874565b905080421015610ae2576040517fbaee697400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826020015184602001511015610afb576000610afe565b60015b60ff1690506000610b2060036000898152602001908152602001600020610f40565b905081600103610c14576040517f0c1d0c2300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c1d0c2390610b9f908a906003906004016118e9565b600060405180830381600087803b158015610bb957600080fd5b505af1158015610bcd573d6000803e3d6000fd5b505050508686608001517facf2c682b2b1589bd6e7b4d197866c0cec809c4bb9b5d48faa792f61119c21746003604051610c0791906118fd565b60405180910390a3610cf9565b6040517f0c1d0c2300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c1d0c2390610c88908a9060049081016118e9565b600060405180830381600087803b158015610ca257600080fd5b505af1158015610cb6573d6000803e3d6000fd5b505050508686608001517facf2c682b2b1589bd6e7b4d197866c0cec809c4bb9b5d48faa792f61119c21746004604051610cf091906118fd565b60405180910390a35b805160005b81811015610d71576000838281518110610d1a57610d1a61190b565b60209081029190910181015160008c815260028352604080822073ffffffffffffffffffffffffffffffffffffffff808516845294529020548951919350610d689291909116908390610f4d565b50600101610cfe565b505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610deb576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020908152604091829020429081905582519081529081018390527f532680bb50b0fe07743261de306827730052801e83a716ab9d83d411ba474291910160405180910390a150565b6000610e5d8373ffffffffffffffffffffffffffffffffffffffff8416610fa3565b9392505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103819085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610ff2565b60606000610e5d83611106565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103839084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610ebe565b6000818152600183016020526040812054610fea57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610579565b506000610579565b6000611054826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111629092919063ffffffff16565b9050805160001480611075575080806020019051810190611075919061193a565b610383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60608160000180548060200260200160405190810160405280929190818152602001828054801561115657602002820191906000526020600020905b815481526020019060010190808311611142575b50505050509050919050565b60606111718484600085611179565b949350505050565b60608247101561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016110fd565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611234919061195c565b60006040518083038185875af1925050503d8060008114611271576040519150601f19603f3d011682016040523d82523d6000602084013e611276565b606091505b509150915061128787838387611292565b979650505050505050565b606083156113285782516000036113215773ffffffffffffffffffffffffffffffffffffffff85163b611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016110fd565b5081611171565b611171838381511561133d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd91906114c9565b60008060006040848603121561138657600080fd5b83359250602084013567ffffffffffffffff808211156113a557600080fd5b818601915086601f8301126113b957600080fd5b8135818111156113c857600080fd5b8760208285010111156113da57600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461140f57600080fd5b50565b6000806040838503121561142557600080fd5b823591506020830135611437816113ed565b809150509250929050565b60006020828403121561145457600080fd5b5035919050565b60005b8381101561147657818101518382015260200161145e565b50506000910152565b6000815180845261149781602086016020860161145b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e5d602083018461147f565b6000806000606084860312156114f157600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b8181101561155657835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611524565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c908216806115a557607f821691505b6020821081036115de577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561038357600081815260208120601f850160051c8101602086101561160b5750805b601f850160051c820191505b8181101561162a57828155600101611617565b505050505050565b67ffffffffffffffff83111561164a5761164a611562565b61165e836116588354611591565b836115e4565b6000601f8411600181146116b0576000851561167a5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611746565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156116ff57868501358255602094850194600190920191016116df565b508682101561173a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60006060828403121561175f57600080fd5b6040516060810181811067ffffffffffffffff8211171561178257611782611562565b6040528251611790816113ed565b8152602083810151908201526040928301519281019290925250919050565b600060c082840312156117c157600080fd5b60405160c0810181811067ffffffffffffffff821117156117e4576117e4611562565b6040528251815260208301516117f9816113ed565b6020820152604083015161180c816113ed565b80604083015250606083015160608201526080830151608082015260a08301516006811061183957600080fd5b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b80820180821115610579577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600681106118e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b82815260408101610e5d60208301846118ae565b6020810161057982846118ae565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561194c57600080fd5b81518015158114610e5d57600080fd5b6000825161196e81846020870161145b565b919091019291505056fea2646970667358221220d3680178cced230b8a03746a7596a2b215aa2d3279d1e5b34bc9b19c0de9a4fa64736f6c63430008130033",
    "sourceMap": "700:4161:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:175:0;;;;;;:::i;:::-;;:::i;:::-;;900:95;;;;;;:::i;:::-;;:::i;237:68::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;201:31;;;;;;;;2345:42:113;2333:55;;;2315:74;;2303:2;2288:18;201:31:0;2153:242:113;893:72:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2574:25:113;;;2630:2;2615:18;;2608:34;;;;2547:18;893:72:52;2400:248:113;1428:179:52;;;;;;:::i;:::-;;:::i;:::-;;;;2893:13:113;;2908:42;2889:62;2871:81;;3008:4;2996:17;;;2990:24;2968:20;;;2961:54;3059:17;;;3053:24;3031:20;;;3024:54;2859:2;2844:18;1428:179:52;2653:431:113;571:94:0;653:6;571:94;;1882:1031:52;;;;;;:::i;:::-;;:::i;4720:139::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1011:90::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4473:25:113;;;4461:2;4446:18;1011:90:52;4327:177:113;1270:113:52;1348:30;;;;;;;;;;;;;;;;;1270:113;;2958:1717;;;;;;:::i;:::-;;:::i;1652:185::-;;;;;;:::i;:::-;;:::i;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;695:175:::0;;;:::o;900:95::-;472:10;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;900:95;;:::o;237:68::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1428:179:52:-;1496:32;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;1496:32:52;1557:11;:23;;;;;;;;;;1546:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1536:66;1428:179;-1:-1:-1;;1428:179:52:o;1882:1031::-;2011:29;;;;;;;;4473:25:113;;;1977:31:52;;2011:6;:17;;;;;4446:18:113;;2011:29:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2050:18;;1977:63;;-1:-1:-1;2050:18:52;:23;2046:78;;2082:42;;;;;;;;;;;;;;2046:78;2153:26;2134:8;:15;;;:45;;;;;;;;:::i;:::-;;2130:97;;2188:39;;;;;;;;;;;;;;2130:97;2234:29;2266:23;;;:11;:23;;;;;;;;2234:55;;;;;;;;;;;;;;;;;;;;;;;;2299:26;2295:82;;2334:43;;;;;;;;;;;;;;2295:82;2384:32;2419:29;2437:10;2419:17;:29::i;:::-;2384:64;;2454:17;2498:7;:25;;;2474:11;:21;;;:49;;;;:::i;:::-;2454:69;;2552:9;2533:15;:28;2529:80;;2570:39;;;;;;;;;;;;;;2529:80;2616:17;;;;:5;:17;;;;;;;;2634:10;2616:29;;;;;;;:47;;2649:14;;2616:17;:47;;2649:14;;2616:47;:::i;:::-;;;;-1:-1:-1;;2670:19:52;;;;:7;:19;;;;;:35;;2694:10;2670:23;:35::i;:::-;-1:-1:-1;2711:23:52;;;;:11;:23;;;;;;;:34;:52;;2749:14;;2711:23;:52;;2749:14;;2711:52;:::i;:::-;;;;-1:-1:-1;;2770:19:52;;:79;;:36;;2807:10;2827:4;2834:14;2770:36;:79::i;:::-;2860:48;;;2869:10;10065:74:113;;10170:2;10155:18;;10148:34;;;10198:18;;;10191:34;;;2860:48:52;;10053:2:113;10038:18;2860:48:52;;;;;;;1971:942;;;;1882:1031;;;:::o;4720:139::-;4826:19;;;;:7;:19;;;;;4782:25;;4826:28;;:26;:28::i;2958:1717::-;472:10:0;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;3138:29:52::1;::::0;;;;::::1;::::0;::::1;4473:25:113::0;;;3104:31:52::1;::::0;3138:6:::1;:17;;::::0;::::1;::::0;4446:18:113;;3138:29:52::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3177:18:::0;;3104:63;;-1:-1:-1;3177:18:52::1;:23:::0;3173:78:::1;;3209:42;;;;;;;;;;;;;;3173:78;3280:26;3261:8;:15;;;:45;;;;;;;;:::i;:::-;;3257:97;;3315:39;;;;;;;;;;;;;;3257:97;3361:29;3393:23:::0;;;:11:::1;:23;::::0;;;;;;;3361:55;;;;::::1;::::0;;;;;;;;;::::1;::::0;;;::::1;::::0;;;;;3481:26;3477:82:::1;;3516:43;;;;;;;;;;;;;;3477:82;3611:32;3646:37;3664:8;:18;;;3646:17;:37::i;:::-;3611:72;;3689:17;3733:7;:25;;;3709:11;:21;;;:49;;;;:::i;:::-;3689:69;;3786:9;3768:15;:27;3764:82;;;3804:42;;;;;;;;;;;;;;3764:82;3853:22;3904:7;:25;;;3878:11;:22;;;:51;;:59;;3936:1;3878:59;;;3932:1;3878:59;3853:84;;;;3944:25;3972:28;:7;:19;3980:10;3972:19;;;;;;;;;;;:26;:28::i;:::-;3944:56;;4035:14;4053:1;4035:19:::0;4031:367:::1;;4064:65;::::0;;;;:26:::1;:6;:26;::::0;::::1;::::0;:65:::1;::::0;4091:10;;4103:25:::1;::::0;4064:65:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4178:10;4158:8;:18;;;4142:74;4190:25;4142:74;;;;;;:::i;:::-;;;;;;;;4031:367;;;4237:66;::::0;;;;:26:::1;:6;:26;::::0;::::1;::::0;:66:::1;::::0;4264:10;;4276:26:::1;::::0;4237:66;::::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4352:10;4332:8;:18;;;4316:75;4364:26;4316:75;;;;;;:::i;:::-;;;;;;;;4031:367;4428:15:::0;;4404:21:::1;4474:197;4496:13;4491:2;:18;4474:197;;;4520:14;4537:8;4546:2;4537:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;4598:17:::1;::::0;;;:5:::1;:17:::0;;;;;;:25:::1;::::0;;::::1;::::0;;;;;;;4557:19;;4537:12;;-1:-1:-1;4557:67:52::1;::::0;:32;;;::::1;::::0;4537:12;;4557:32:::1;:67::i;:::-;-1:-1:-1::0;4652:4:52::1;;4474:197;;;;3022:1653;;;;;;;2958:1717:::0;:::o;1652:185::-;472:10:0;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;1723:23:52::1;::::0;;;:11:::1;:23;::::0;;;;;;;;1759:15:::1;1723:51:::0;;;;1785:47;;2574:25:113;;;2615:18;;;2608:34;;;1785:47:52::1;::::0;2547:18:113;1785:47:52::1;;;;;;;1652:185:::0;:::o;8305:150:18:-;8375:4;8398:50;8403:3;8423:23;;;8398:4;:50::i;:::-;8391:57;8305:150;-1:-1:-1;;;8305:150:18:o;1355:203:13:-;1482:68;;11706:42:113;11775:15;;;1482:68:13;;;11757:34:113;11827:15;;11807:18;;;11800:43;11859:18;;;11852:34;;;1455:96:13;;1475:5;;1505:27;;11669:18:113;;1482:68:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:19;:96::i;10259:300:18:-;10322:16;10350:22;10375:19;10383:3;10375:7;:19::i;941:175:13:-;1050:58;;12101:42:113;12089:55;;1050:58:13;;;12071:74:113;12161:18;;;12154:34;;;1023:86:13;;1043:5;;1073:23;;12044:18:113;;1050:58:13;11897:297:113;2214:404:18;2277:4;4351:19;;;:12;;;:19;;;;;;2293:319;;-1:-1:-1;2335:23:18;;;;;;;;:11;:23;;;;;;;;;;;;;2515:18;;2493:19;;;:12;;;:19;;;;;;:40;;;;2547:11;;2293:319;-1:-1:-1;2596:5:18;2589:12;;5196:642:13;5615:23;5641:69;5669:4;5641:69;;;;;;;;;;;;;;;;;5649:5;5641:27;;;;:69;;;;;:::i;:::-;5615:95;;5728:10;:17;5749:1;5728:22;:56;;;;5765:10;5754:30;;;;;;;;;;;;:::i;:::-;5720:111;;;;;;;12683:2:113;5720:111:13;;;12665:21:113;12722:2;12702:18;;;12695:30;12761:34;12741:18;;;12734:62;12832:12;12812:18;;;12805:40;12862:19;;5720:111:13;;;;;;;;5570:109:18;5626:16;5661:3;:11;;5654:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5570:109;;;:::o;4108:223:14:-;4241:12;4272:52;4294:6;4302:4;4308:1;4311:12;4272:21;:52::i;:::-;4265:59;4108:223;-1:-1:-1;;;;4108:223:14:o;5165:446::-;5330:12;5387:5;5362:21;:30;;5354:81;;;;;;;13094:2:113;5354:81:14;;;13076:21:113;13133:2;13113:18;;;13106:30;13172:34;13152:18;;;13145:62;13243:8;13223:18;;;13216:36;13269:19;;5354:81:14;12892:402:113;5354:81:14;5446:12;5460:23;5487:6;:11;;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;5165:446;-1:-1:-1;;;;;;;5165:446:14:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;;;;13793:2:113;8113:60:14;;;13775:21:113;13832:2;13812:18;;;13805:30;13871:31;13851:18;;;13844:59;13920:18;;8113:60:14;13591:353:113;8113:60:14;-1:-1:-1;8208:10:14;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;;;;;;;;;;:::i;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;3320:316::-;3397:6;3405;3413;3466:2;3454:9;3445:7;3441:23;3437:32;3434:52;;;3482:1;3479;3472:12;3434:52;-1:-1:-1;;3505:23:113;;;3575:2;3560:18;;3547:32;;-1:-1:-1;3626:2:113;3611:18;;;3598:32;;3320:316;-1:-1:-1;3320:316:113:o;3641:681::-;3812:2;3864:21;;;3934:13;;3837:18;;;3956:22;;;3783:4;;3812:2;4035:15;;;;4009:2;3994:18;;;3783:4;4078:218;4092:6;4089:1;4086:13;4078:218;;;4157:13;;4172:42;4153:62;4141:75;;4271:15;;;;4236:12;;;;4114:1;4107:9;4078:218;;;-1:-1:-1;4313:3:113;;3641:681;-1:-1:-1;;;;;;3641:681:113:o;4733:184::-;4785:77;4782:1;4775:88;4882:4;4879:1;4872:15;4906:4;4903:1;4896:15;4922:437;5001:1;4997:12;;;;5044;;;5065:61;;5119:4;5111:6;5107:17;5097:27;;5065:61;5172:2;5164:6;5161:14;5141:18;5138:38;5135:218;;5209:77;5206:1;5199:88;5310:4;5307:1;5300:15;5338:4;5335:1;5328:15;5135:218;;4922:437;;;:::o;5489:544::-;5590:2;5585:3;5582:11;5579:448;;;5626:1;5651:5;5647:2;5640:17;5696:4;5692:2;5682:19;5766:2;5754:10;5750:19;5747:1;5743:27;5737:4;5733:38;5802:4;5790:10;5787:20;5784:47;;;-1:-1:-1;5825:4:113;5784:47;5880:2;5875:3;5871:12;5868:1;5864:20;5858:4;5854:31;5844:41;;5935:82;5953:2;5946:5;5943:13;5935:82;;;5998:17;;;5979:1;5968:13;5935:82;;;5939:3;;;5489:544;;;:::o;6269:1321::-;6391:18;6386:3;6383:27;6380:53;;;6413:18;;:::i;:::-;6442:93;6531:3;6491:38;6523:4;6517:11;6491:38;:::i;:::-;6485:4;6442:93;:::i;:::-;6561:1;6586:2;6581:3;6578:11;6603:1;6598:734;;;;7376:1;7393:3;7390:93;;;-1:-1:-1;7449:19:113;;;7436:33;7390:93;6175:66;6166:1;6162:11;;;6158:84;6154:89;6144:100;6250:1;6246:11;;;6141:117;7496:78;;6571:1013;;6598:734;5436:1;5429:14;;;5473:4;5460:18;;6643:66;6634:76;;;6793:9;6815:229;6829:7;6826:1;6823:14;6815:229;;;6918:19;;;6905:33;6890:49;;7025:4;7010:20;;;;6978:1;6966:14;;;;6845:12;6815:229;;;6819:3;7072;7063:7;7060:16;7057:219;;;7192:66;7186:3;7180;7177:1;7173:11;7169:21;7165:94;7161:99;7148:9;7143:3;7139:19;7126:33;7122:139;7114:6;7107:155;7057:219;;;7319:1;7313:3;7310:1;7306:11;7302:19;7296:4;7289:33;6571:1013;;;6269:1321;;;:::o;7595:638::-;7701:6;7754:2;7742:9;7733:7;7729:23;7725:32;7722:52;;;7770:1;7767;7760:12;7722:52;7803:2;7797:9;7845:2;7837:6;7833:15;7914:6;7902:10;7899:22;7878:18;7866:10;7863:34;7860:62;7857:88;;;7925:18;;:::i;:::-;7961:2;7954:22;7998:16;;8023:31;7998:16;8023:31;:::i;:::-;8063:21;;8138:2;8123:18;;;8117:25;8100:15;;;8093:50;8197:2;8182:18;;;8176:25;8159:15;;;8152:50;;;;-1:-1:-1;8070:6:113;7595:638;-1:-1:-1;7595:638:113:o;8420:965::-;8515:6;8568:3;8556:9;8547:7;8543:23;8539:33;8536:53;;;8585:1;8582;8575:12;8536:53;8618:2;8612:9;8660:3;8652:6;8648:16;8730:6;8718:10;8715:22;8694:18;8682:10;8679:34;8676:62;8673:88;;;8741:18;;:::i;:::-;8777:2;8770:22;8816:16;;8801:32;;8876:2;8861:18;;8855:25;8889:31;8855:25;8889:31;:::i;:::-;8948:2;8936:15;;8929:30;9004:2;8989:18;;8983:25;9017:33;8983:25;9017:33;:::i;:::-;9083:7;9078:2;9070:6;9066:15;9059:32;;9145:2;9134:9;9130:18;9124:25;9119:2;9111:6;9107:15;9100:50;9205:3;9194:9;9190:19;9184:26;9178:3;9170:6;9166:16;9159:52;9256:3;9245:9;9241:19;9235:26;9292:1;9283:7;9280:14;9270:42;;9308:1;9305;9298:12;9270:42;9340:3;9328:16;;9321:33;9332:6;8420:965;-1:-1:-1;;;8420:965:113:o;9390:184::-;9442:77;9439:1;9432:88;9539:4;9536:1;9529:15;9563:4;9560:1;9553:15;9579:279;9644:9;;;9665:10;;;9662:190;;;9708:77;9705:1;9698:88;9809:4;9806:1;9799:15;9837:4;9834:1;9827:15;10236:298;10321:1;10314:5;10311:12;10301:200;;10357:77;10354:1;10347:88;10458:4;10455:1;10448:15;10486:4;10483:1;10476:15;10301:200;10510:18;;10236:298::o;10539:287::-;10729:25;;;10717:2;10702:18;;10763:57;10816:2;10801:18;;10793:6;10763:57;:::i;10831:216::-;10981:2;10966:18;;10993:48;10970:9;11023:6;10993:48;:::i;11052:184::-;11104:77;11101:1;11094:88;11201:4;11198:1;11191:15;11225:4;11222:1;11215:15;12199:277;12266:6;12319:2;12307:9;12298:7;12294:23;12290:32;12287:52;;;12335:1;12332;12325:12;12287:52;12367:9;12361:16;12420:5;12413:13;12406:21;12399:5;12396:32;12386:60;;12442:1;12439;12432:12;13299:287;13428:3;13466:6;13460:13;13482:66;13541:6;13536:3;13529:4;13521:6;13517:17;13482:66;:::i;:::-;13564:16;;;;;13299:287;-1:-1:-1;;13299:287:113:o",
    "linkReferences": {},
    "immutableReferences": {
      "10": [
        {
          "start": 314,
          "length": 32
        },
        {
          "start": 522,
          "length": 32
        },
        {
          "start": 785,
          "length": 32
        },
        {
          "start": 928,
          "length": 32
        },
        {
          "start": 1457,
          "length": 32
        },
        {
          "start": 2185,
          "length": 32
        },
        {
          "start": 2322,
          "length": 32
        },
        {
          "start": 2919,
          "length": 32
        },
        {
          "start": 3153,
          "length": 32
        },
        {
          "start": 3476,
          "length": 32
        }
      ]
    }
  },
  "methodIdentifiers": {
    "ORACLE()": "38013f02",
    "castVote(bytes32,bytes32,uint256)": "7e89ff59",
    "decodeRequestData(bytes32)": "4d610a46",
    "escalations(bytes32)": "4cf3ad6a",
    "finalizeRequest(bytes32,address)": "309de607",
    "getVoters(bytes32)": "8b4a781c",
    "moduleName()": "93f0899a",
    "oracle()": "7dc0d1d0",
    "requestData(bytes32)": "3661346b",
    "resolveDispute(bytes32)": "c8218e3e",
    "setupRequest(bytes32,bytes)": "2e76be2a",
    "startResolution(bytes32)": "d96dd0e7",
    "votes(bytes32,address)": "9386775a"
  },
  "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\":\"ERC20ResolutionModule_AlreadyResolved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC20ResolutionModule_DisputeNotEscalated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC20ResolutionModule_NonExistentDispute\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC20ResolutionModule_OnGoingVotingPhase\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC20ResolutionModule_OnlyDisputeModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC20ResolutionModule_UnresolvedDispute\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC20ResolutionModule_VotingPhaseOver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Module_OnlyOracle\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum IOracle.DisputeStatus\",\"name\":\"_status\",\"type\":\"uint8\"}],\"name\":\"DisputeResolved\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"ResolutionStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_numberOfVotes\",\"type\":\"uint256\"}],\"name\":\"VoteCast\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"VotingPhaseStarted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ORACLE\",\"outputs\":[{\"internalType\":\"contract IOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_numberOfVotes\",\"type\":\"uint256\"}],\"name\":\"castVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"decodeRequestData\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"votingToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minVotesForQuorum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeUntilDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IERC20ResolutionModule.RequestParameters\",\"name\":\"_params\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"escalations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalVotes\",\"type\":\"uint256\"}],\"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\":[{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"getVoters\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"__voters\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"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\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"resolveDispute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"setupRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"startResolution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"votes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_numOfVotes\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DisputeResolved(bytes32,bytes32,uint8)\":{\"params\":{\"_disputeId\":\"The id for the dispute that was resolved\",\"_requestId\":\"The id for the request that was disputed\",\"_status\":\"The final result of the resolution\"}},\"RequestFinalized(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request that was finalized\"}},\"ResolutionStarted(bytes32,bytes32)\":{\"params\":{\"_disputeId\":\"The id for the dispute that the resolution was started for\",\"_requestId\":\"The id for the request for the dispute\"}},\"VoteCast(address,bytes32,uint256)\":{\"params\":{\"_disputeId\":\"The id of the dispute\",\"_numberOfVotes\":\"The number of votes cast by the voter\",\"_voter\":\"The address of the voter\"}},\"VotingPhaseStarted(uint256,bytes32)\":{\"params\":{\"_disputeId\":\"The ID of the dispute\",\"_startTime\":\"The time when the voting phase started\"}}},\"kind\":\"dev\",\"methods\":{\"castVote(bytes32,bytes32,uint256)\":{\"params\":{\"_disputeId\":\"The id of the dispute being voted on\",\"_numberOfVotes\":\"The number of votes to cast\",\"_requestId\":\"The id of the request being disputed\"}},\"decodeRequestData(bytes32)\":{\"params\":{\"_requestId\":\"The ID of the request\"},\"returns\":{\"_params\":\"The struct containing the parameters for the request\"}},\"finalizeRequest(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request being finalized\"}},\"getVoters(bytes32)\":{\"params\":{\"_disputeId\":\"The id of the dispute\"},\"returns\":{\"__voters\":\"The addresses of the voters\"}},\"moduleName()\":{\"returns\":{\"_moduleName\":\"The name of the module.\"}},\"oracle()\":{\"returns\":{\"_oracle\":\"The address of the oracle\"}},\"resolveDispute(bytes32)\":{\"params\":{\"_disputeId\":\"The ID of the dispute being resolved\"}},\"setupRequest(bytes32,bytes)\":{\"params\":{\"_data\":\"The data of the request\",\"_requestId\":\"The ID of the request\"}},\"startResolution(bytes32)\":{\"params\":{\"_disputeId\":\"The ID of the dispute\"}}},\"stateVariables\":{\"escalations\":{\"params\":{\"_disputeId\":\"The id of the dispute\"},\"returns\":{\"startTime\":\"The timestamp at which the dispute was escalated\",\"totalVotes\":\"The total amount of votes cast for the dispute\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ERC20ResolutionModule_AlreadyResolved()\":[{\"notice\":\"Throws if the dispute has already been resolved\"}],\"ERC20ResolutionModule_DisputeNotEscalated()\":[{\"notice\":\"Throws if the dispute has not been escalated\"}],\"ERC20ResolutionModule_NonExistentDispute()\":[{\"notice\":\"Throws if the dispute does not exist\"}],\"ERC20ResolutionModule_OnGoingVotingPhase()\":[{\"notice\":\"Throws if the voting phase is ongoing\"}],\"ERC20ResolutionModule_OnlyDisputeModule()\":[{\"notice\":\"Throws if the caller is not the dispute module\"}],\"ERC20ResolutionModule_UnresolvedDispute()\":[{\"notice\":\"Throws if the dispute is unresolved\"}],\"ERC20ResolutionModule_VotingPhaseOver()\":[{\"notice\":\"Throws if the voting phase is over\"}],\"Module_OnlyOracle()\":[{\"notice\":\"Thrown when the caller is not the oracle\"}]},\"events\":{\"DisputeResolved(bytes32,bytes32,uint8)\":{\"notice\":\"Emitted when a dispute has been resolved\"},\"RequestFinalized(bytes32,address)\":{\"notice\":\"Emitted when a request is finalized\"},\"ResolutionStarted(bytes32,bytes32)\":{\"notice\":\"Emitted when a resolution is started\"},\"VoteCast(address,bytes32,uint256)\":{\"notice\":\"Emitted when a voter casts their vote on a dispute\"},\"VotingPhaseStarted(uint256,bytes32)\":{\"notice\":\"Emitted when the voting phase has started\"}},\"kind\":\"user\",\"methods\":{\"castVote(bytes32,bytes32,uint256)\":{\"notice\":\"Casts a vote in favor of a dispute\"},\"decodeRequestData(bytes32)\":{\"notice\":\"Returns the decoded data for a request\"},\"escalations(bytes32)\":{\"notice\":\"Returns the escalation data for a dispute\"},\"finalizeRequest(bytes32,address)\":{\"notice\":\"Finalizes a given request and executes any additional logic set by the chosen modules\"},\"getVoters(bytes32)\":{\"notice\":\"Gets the voters of a dispute\"},\"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\"},\"resolveDispute(bytes32)\":{\"notice\":\"Resolves a dispute\"},\"setupRequest(bytes32,bytes)\":{\"notice\":\"Stores the request data and runs module-specific hooks\"},\"startResolution(bytes32)\":{\"notice\":\"Starts the resolution process\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/contracts/modules/resolution/ERC20ResolutionModule.sol\":\"ERC20ResolutionModule\"},\"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\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a\",\"dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"node_modules/@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df\",\"dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW\"]},\"solidity/contracts/modules/resolution/ERC20ResolutionModule.sol\":{\"keccak256\":\"0xbb89295582b3827942bccc77a8be12d1c9a284475dc3e3b12d0bbb0d639e1f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d89f8df54e849c2d8d03dc3f01c1c0b0c05c538160c7365b0ef01fa83bd131c\",\"dweb:/ipfs/QmU2DTPBshjr5ETsar8uQ4dXugXfZSNYu7VNREVdik9TfF\"]},\"solidity/interfaces/modules/resolution/IERC20ResolutionModule.sol\":{\"keccak256\":\"0x56bf1230034f20b7df2b72943e75421768052cfec6dbdf2a3493ce1757bdf3eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae2bae32b1f4335d9fcaf37335fa4f43fbc78fa15e9ad0513a7bb6104bfe5aa6\",\"dweb:/ipfs/QmXEmCMFrzJgEXE1gtcxo8Z96dsinQu76ttpagdsbU1hTS\"]}},\"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": "ERC20ResolutionModule_AlreadyResolved"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "ERC20ResolutionModule_DisputeNotEscalated"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "ERC20ResolutionModule_NonExistentDispute"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "ERC20ResolutionModule_OnGoingVotingPhase"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "ERC20ResolutionModule_OnlyDisputeModule"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "ERC20ResolutionModule_UnresolvedDispute"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "ERC20ResolutionModule_VotingPhaseOver"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Module_OnlyOracle"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "enum IOracle.DisputeStatus",
              "name": "_status",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "DisputeResolved",
          "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": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "ResolutionStarted",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_voter",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "_numberOfVotes",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "VoteCast",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_startTime",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "VotingPhaseStarted",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "ORACLE",
          "outputs": [
            {
              "internalType": "contract IOracle",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "_numberOfVotes",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "castVote"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "decodeRequestData",
          "outputs": [
            {
              "internalType": "struct IERC20ResolutionModule.RequestParameters",
              "name": "_params",
              "type": "tuple",
              "components": [
                {
                  "internalType": "contract IERC20",
                  "name": "votingToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minVotesForQuorum",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "timeUntilDeadline",
                  "type": "uint256"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "escalations",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "startTime",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalVotes",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "finalizeRequest"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getVoters",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "__voters",
              "type": "address[]"
            }
          ]
        },
        {
          "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": "_disputeId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "resolveDispute"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "_data",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setupRequest"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "startResolution"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "_voter",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "votes",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "_numOfVotes",
              "type": "uint256"
            }
          ]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "castVote(bytes32,bytes32,uint256)": {
            "params": {
              "_disputeId": "The id of the dispute being voted on",
              "_numberOfVotes": "The number of votes to cast",
              "_requestId": "The id of the request being disputed"
            }
          },
          "decodeRequestData(bytes32)": {
            "params": {
              "_requestId": "The ID of the request"
            },
            "returns": {
              "_params": "The struct containing the parameters for the request"
            }
          },
          "finalizeRequest(bytes32,address)": {
            "params": {
              "_finalizer": "The address that initiated the finalization",
              "_requestId": "The ID of the request being finalized"
            }
          },
          "getVoters(bytes32)": {
            "params": {
              "_disputeId": "The id of the dispute"
            },
            "returns": {
              "__voters": "The addresses of the voters"
            }
          },
          "moduleName()": {
            "returns": {
              "_moduleName": "The name of the module."
            }
          },
          "oracle()": {
            "returns": {
              "_oracle": "The address of the oracle"
            }
          },
          "resolveDispute(bytes32)": {
            "params": {
              "_disputeId": "The ID of the dispute being resolved"
            }
          },
          "setupRequest(bytes32,bytes)": {
            "params": {
              "_data": "The data of the request",
              "_requestId": "The ID of the request"
            }
          },
          "startResolution(bytes32)": {
            "params": {
              "_disputeId": "The ID of the dispute"
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "castVote(bytes32,bytes32,uint256)": {
            "notice": "Casts a vote in favor of a dispute"
          },
          "decodeRequestData(bytes32)": {
            "notice": "Returns the decoded data for a request"
          },
          "escalations(bytes32)": {
            "notice": "Returns the escalation data for a dispute"
          },
          "finalizeRequest(bytes32,address)": {
            "notice": "Finalizes a given request and executes any additional logic set by the chosen modules"
          },
          "getVoters(bytes32)": {
            "notice": "Gets the voters of a dispute"
          },
          "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"
          },
          "resolveDispute(bytes32)": {
            "notice": "Resolves a dispute"
          },
          "setupRequest(bytes32,bytes)": {
            "notice": "Stores the request data and runs module-specific hooks"
          },
          "startResolution(bytes32)": {
            "notice": "Starts the resolution process"
          }
        },
        "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/resolution/ERC20ResolutionModule.sol": "ERC20ResolutionModule"
      },
      "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"
      },
      "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "keccak256": "0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305",
        "urls": [
          "bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5",
          "dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": {
        "keccak256": "0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a",
        "urls": [
          "bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a",
          "dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
        "keccak256": "0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1",
        "urls": [
          "bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68",
          "dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/Address.sol": {
        "keccak256": "0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa",
        "urls": [
          "bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931",
          "dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/structs/EnumerableSet.sol": {
        "keccak256": "0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514",
        "urls": [
          "bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df",
          "dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW"
        ],
        "license": "MIT"
      },
      "solidity/contracts/modules/resolution/ERC20ResolutionModule.sol": {
        "keccak256": "0xbb89295582b3827942bccc77a8be12d1c9a284475dc3e3b12d0bbb0d639e1f58",
        "urls": [
          "bzz-raw://7d89f8df54e849c2d8d03dc3f01c1c0b0c05c538160c7365b0ef01fa83bd131c",
          "dweb:/ipfs/QmU2DTPBshjr5ETsar8uQ4dXugXfZSNYu7VNREVdik9TfF"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/modules/resolution/IERC20ResolutionModule.sol": {
        "keccak256": "0x56bf1230034f20b7df2b72943e75421768052cfec6dbdf2a3493ce1757bdf3eb",
        "urls": [
          "bzz-raw://ae2bae32b1f4335d9fcaf37335fa4f43fbc78fa15e9ad0513a7bb6104bfe5aa6",
          "dweb:/ipfs/QmXEmCMFrzJgEXE1gtcxo8Z96dsinQu76ttpagdsbU1hTS"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "solidity/contracts/modules/resolution/ERC20ResolutionModule.sol",
    "id": 40348,
    "exportedSymbols": {
      "ERC20ResolutionModule": [
        40347
      ],
      "EnumerableSet": [
        5377
      ],
      "IERC20": [
        2822
      ],
      "IERC20ResolutionModule": [
        43836
      ],
      "IModule": [
        1782
      ],
      "IOracle": [
        2282
      ],
      "Module": [
        98
      ],
      "SafeERC20": [
        3234
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:4830:52",
    "nodes": [
      {
        "id": 39924,
        "nodeType": "PragmaDirective",
        "src": "32:24:52",
        "nodes": [],
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ]
      },
      {
        "id": 39926,
        "nodeType": "ImportDirective",
        "src": "104:70:52",
        "nodes": [],
        "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 40348,
        "sourceUnit": 2823,
        "symbolAliases": [
          {
            "foreign": {
              "id": 39925,
              "name": "IERC20",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2822,
              "src": "112:6:52",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 39928,
        "nodeType": "ImportDirective",
        "src": "175:82:52",
        "nodes": [],
        "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 40348,
        "sourceUnit": 3235,
        "symbolAliases": [
          {
            "foreign": {
              "id": 39927,
              "name": "SafeERC20",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 3234,
              "src": "183:9:52",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 39930,
        "nodeType": "ImportDirective",
        "src": "258:86:52",
        "nodes": [],
        "absolutePath": "node_modules/@openzeppelin/contracts/utils/structs/EnumerableSet.sol",
        "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 40348,
        "sourceUnit": 5378,
        "symbolAliases": [
          {
            "foreign": {
              "id": 39929,
              "name": "EnumerableSet",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 5377,
              "src": "266:13:52",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 39933,
        "nodeType": "ImportDirective",
        "src": "392:102:52",
        "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": 40348,
        "sourceUnit": 99,
        "symbolAliases": [
          {
            "foreign": {
              "id": 39931,
              "name": "Module",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 98,
              "src": "400:6:52",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 39932,
              "name": "IModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 1782,
              "src": "408:7:52",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 39935,
        "nodeType": "ImportDirective",
        "src": "495:96:52",
        "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": 40348,
        "sourceUnit": 2283,
        "symbolAliases": [
          {
            "foreign": {
              "id": 39934,
              "name": "IOracle",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2282,
              "src": "503:7:52",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 39937,
        "nodeType": "ImportDirective",
        "src": "593:105:52",
        "nodes": [],
        "absolutePath": "solidity/interfaces/modules/resolution/IERC20ResolutionModule.sol",
        "file": "../../../interfaces/modules/resolution/IERC20ResolutionModule.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 40348,
        "sourceUnit": 43837,
        "symbolAliases": [
          {
            "foreign": {
              "id": 39936,
              "name": "IERC20ResolutionModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 43836,
              "src": "601:22:52",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 40347,
        "nodeType": "ContractDefinition",
        "src": "700:4161:52",
        "nodes": [
          {
            "id": 39945,
            "nodeType": "UsingForDirective",
            "src": "769:27:52",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 39942,
              "name": "SafeERC20",
              "nameLocations": [
                "775:9:52"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 3234,
              "src": "775:9:52"
            },
            "typeName": {
              "id": 39944,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 39943,
                "name": "IERC20",
                "nameLocations": [
                  "789:6:52"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 2822,
                "src": "789:6:52"
              },
              "referencedDeclaration": 2822,
              "src": "789:6:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20_$2822",
                "typeString": "contract IERC20"
              }
            }
          },
          {
            "id": 39949,
            "nodeType": "UsingForDirective",
            "src": "799:49:52",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 39946,
              "name": "EnumerableSet",
              "nameLocations": [
                "805:13:52"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5377,
              "src": "805:13:52"
            },
            "typeName": {
              "id": 39948,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 39947,
                "name": "EnumerableSet.AddressSet",
                "nameLocations": [
                  "823:13:52",
                  "837:10:52"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 5090,
                "src": "823:24:52"
              },
              "referencedDeclaration": 5090,
              "src": "823:24:52",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_AddressSet_$5090_storage_ptr",
                "typeString": "struct EnumerableSet.AddressSet"
              }
            }
          },
          {
            "id": 39955,
            "nodeType": "VariableDeclaration",
            "src": "893:72:52",
            "nodes": [],
            "baseFunctions": [
              43786
            ],
            "constant": false,
            "documentation": {
              "id": 39950,
              "nodeType": "StructuredDocumentation",
              "src": "852:38:52",
              "text": "@inheritdoc IERC20ResolutionModule"
            },
            "functionSelector": "4cf3ad6a",
            "mutability": "mutable",
            "name": "escalations",
            "nameLocation": "954:11:52",
            "scope": 40347,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43776_storage_$",
              "typeString": "mapping(bytes32 => struct IERC20ResolutionModule.Escalation)"
            },
            "typeName": {
              "id": 39954,
              "keyName": "_disputeId",
              "keyNameLocation": "909:10:52",
              "keyType": {
                "id": 39951,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "901:7:52",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "893:53:52",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43776_storage_$",
                "typeString": "mapping(bytes32 => struct IERC20ResolutionModule.Escalation)"
              },
              "valueName": "_escalation",
              "valueNameLocation": "934:11:52",
              "valueType": {
                "id": 39953,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 39952,
                  "name": "Escalation",
                  "nameLocations": [
                    "923:10:52"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 43776,
                  "src": "923:10:52"
                },
                "referencedDeclaration": 43776,
                "src": "923:10:52",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Escalation_$43776_storage_ptr",
                  "typeString": "struct IERC20ResolutionModule.Escalation"
                }
              }
            },
            "visibility": "public"
          },
          {
            "id": 39962,
            "nodeType": "VariableDeclaration",
            "src": "1011:90:52",
            "nodes": [],
            "baseFunctions": [
              43795
            ],
            "constant": false,
            "documentation": {
              "id": 39956,
              "nodeType": "StructuredDocumentation",
              "src": "970:38:52",
              "text": "@inheritdoc IERC20ResolutionModule"
            },
            "functionSelector": "9386775a",
            "mutability": "mutable",
            "name": "votes",
            "nameLocation": "1096:5:52",
            "scope": 40347,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
              "typeString": "mapping(bytes32 => mapping(address => uint256))"
            },
            "typeName": {
              "id": 39961,
              "keyName": "_disputeId",
              "keyNameLocation": "1027:10:52",
              "keyType": {
                "id": 39957,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1019:7:52",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1011:77:52",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                "typeString": "mapping(bytes32 => mapping(address => uint256))"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 39960,
                "keyName": "_voter",
                "keyNameLocation": "1057:6:52",
                "keyType": {
                  "id": 39958,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1049:7:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1041:46:52",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "valueName": "_numOfVotes",
                "valueNameLocation": "1075:11:52",
                "valueType": {
                  "id": 39959,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1067:7:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "visibility": "public"
          },
          {
            "id": 39967,
            "nodeType": "VariableDeclaration",
            "src": "1106:82:52",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_voters",
            "nameLocation": "1181:7:52",
            "scope": 40347,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$5090_storage_$",
              "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet)"
            },
            "typeName": {
              "id": 39966,
              "keyName": "_disputeId",
              "keyNameLocation": "1122:10:52",
              "keyType": {
                "id": 39963,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1114:7:52",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1106:66:52",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$5090_storage_$",
                "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet)"
              },
              "valueName": "_votersSet",
              "valueNameLocation": "1161:10:52",
              "valueType": {
                "id": 39965,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 39964,
                  "name": "EnumerableSet.AddressSet",
                  "nameLocations": [
                    "1136:13:52",
                    "1150:10:52"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5090,
                  "src": "1136:24:52"
                },
                "referencedDeclaration": 5090,
                "src": "1136:24:52",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_AddressSet_$5090_storage_ptr",
                  "typeString": "struct EnumerableSet.AddressSet"
                }
              }
            },
            "visibility": "private"
          },
          {
            "id": 39977,
            "nodeType": "FunctionDefinition",
            "src": "1193:47:52",
            "nodes": [],
            "body": {
              "id": 39976,
              "nodeType": "Block",
              "src": "1238:2:52",
              "nodes": [],
              "statements": []
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 39973,
                    "name": "_oracle",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 39970,
                    "src": "1229:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  }
                ],
                "id": 39974,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 39972,
                  "name": "Module",
                  "nameLocations": [
                    "1222:6:52"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 98,
                  "src": "1222:6:52"
                },
                "nodeType": "ModifierInvocation",
                "src": "1222:15:52"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 39971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 39970,
                  "mutability": "mutable",
                  "name": "_oracle",
                  "nameLocation": "1213:7:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 39977,
                  "src": "1205:15:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IOracle_$2282",
                    "typeString": "contract IOracle"
                  },
                  "typeName": {
                    "id": 39969,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 39968,
                      "name": "IOracle",
                      "nameLocations": [
                        "1205:7:52"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2282,
                      "src": "1205:7:52"
                    },
                    "referencedDeclaration": 2282,
                    "src": "1205:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1204:17:52"
            },
            "returnParameters": {
              "id": 39975,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1238:0:52"
            },
            "scope": 40347,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 39986,
            "nodeType": "FunctionDefinition",
            "src": "1270:113:52",
            "nodes": [],
            "body": {
              "id": 39985,
              "nodeType": "Block",
              "src": "1342:41:52",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "hexValue": "45524332305265736f6c7574696f6e4d6f64756c65",
                    "id": 39983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1355:23:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_3609a5a5c3d6f8bdb598c85ace6b6b1b01d1da1eb1e933172620ea2d54d470e0",
                      "typeString": "literal_string \"ERC20ResolutionModule\""
                    },
                    "value": "ERC20ResolutionModule"
                  },
                  "functionReturnParameters": 39982,
                  "id": 39984,
                  "nodeType": "Return",
                  "src": "1348:30:52"
                }
              ]
            },
            "baseFunctions": [
              1781
            ],
            "documentation": {
              "id": 39978,
              "nodeType": "StructuredDocumentation",
              "src": "1244:23:52",
              "text": "@inheritdoc IModule"
            },
            "functionSelector": "93f0899a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "moduleName",
            "nameLocation": "1279:10:52",
            "parameters": {
              "id": 39979,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1289:2:52"
            },
            "returnParameters": {
              "id": 39982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 39981,
                  "mutability": "mutable",
                  "name": "_moduleName",
                  "nameLocation": "1329:11:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 39986,
                  "src": "1315:25:52",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 39980,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1315:6:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1314:27:52"
            },
            "scope": 40347,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 40007,
            "nodeType": "FunctionDefinition",
            "src": "1428:179:52",
            "nodes": [],
            "body": {
              "id": 40006,
              "nodeType": "Block",
              "src": "1530:77:52",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 40004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 39995,
                      "name": "_params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 39993,
                      "src": "1536:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                        "typeString": "struct IERC20ResolutionModule.RequestParameters memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 39998,
                            "name": "requestData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14,
                            "src": "1557:11:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes32 => bytes storage ref)"
                            }
                          },
                          "id": 40000,
                          "indexExpression": {
                            "id": 39999,
                            "name": "_requestId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39989,
                            "src": "1569:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1557:23:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        {
                          "components": [
                            {
                              "id": 40001,
                              "name": "RequestParameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43771,
                              "src": "1583:17:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43771_storage_ptr_$",
                                "typeString": "type(struct IERC20ResolutionModule.RequestParameters storage pointer)"
                              }
                            }
                          ],
                          "id": 40002,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1582:19:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43771_storage_ptr_$",
                            "typeString": "type(struct IERC20ResolutionModule.RequestParameters storage pointer)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          },
                          {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43771_storage_ptr_$",
                            "typeString": "type(struct IERC20ResolutionModule.RequestParameters storage pointer)"
                          }
                        ],
                        "expression": {
                          "id": 39996,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -1,
                          "src": "1546:3:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 39997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1550:6:52",
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "1546:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40003,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1546:56:52",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                        "typeString": "struct IERC20ResolutionModule.RequestParameters memory"
                      }
                    },
                    "src": "1536:66:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                      "typeString": "struct IERC20ResolutionModule.RequestParameters memory"
                    }
                  },
                  "id": 40005,
                  "nodeType": "ExpressionStatement",
                  "src": "1536:66:52"
                }
              ]
            },
            "baseFunctions": [
              43804
            ],
            "documentation": {
              "id": 39987,
              "nodeType": "StructuredDocumentation",
              "src": "1387:38:52",
              "text": "@inheritdoc IERC20ResolutionModule"
            },
            "functionSelector": "4d610a46",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decodeRequestData",
            "nameLocation": "1437:17:52",
            "parameters": {
              "id": 39990,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 39989,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "1463:10:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 40007,
                  "src": "1455:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 39988,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1455:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1454:20:52"
            },
            "returnParameters": {
              "id": 39994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 39993,
                  "mutability": "mutable",
                  "name": "_params",
                  "nameLocation": "1521:7:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 40007,
                  "src": "1496:32:52",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                    "typeString": "struct IERC20ResolutionModule.RequestParameters"
                  },
                  "typeName": {
                    "id": 39992,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 39991,
                      "name": "RequestParameters",
                      "nameLocations": [
                        "1496:17:52"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 43771,
                      "src": "1496:17:52"
                    },
                    "referencedDeclaration": 43771,
                    "src": "1496:17:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43771_storage_ptr",
                      "typeString": "struct IERC20ResolutionModule.RequestParameters"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1495:34:52"
            },
            "scope": 40347,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 40030,
            "nodeType": "FunctionDefinition",
            "src": "1652:185:52",
            "nodes": [],
            "body": {
              "id": 40029,
              "nodeType": "Block",
              "src": "1717:120:52",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 40021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "baseExpression": {
                          "id": 40015,
                          "name": "escalations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39955,
                          "src": "1723:11:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43776_storage_$",
                            "typeString": "mapping(bytes32 => struct IERC20ResolutionModule.Escalation storage ref)"
                          }
                        },
                        "id": 40017,
                        "indexExpression": {
                          "id": 40016,
                          "name": "_disputeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40010,
                          "src": "1735:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1723:23:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43776_storage",
                          "typeString": "struct IERC20ResolutionModule.Escalation storage ref"
                        }
                      },
                      "id": 40018,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "1747:9:52",
                      "memberName": "startTime",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43773,
                      "src": "1723:33:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 40019,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "1759:5:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 40020,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1765:9:52",
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "1759:15:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1723:51:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 40022,
                  "nodeType": "ExpressionStatement",
                  "src": "1723:51:52"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40024,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "1804:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 40025,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1810:9:52",
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "src": "1804:15:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 40026,
                        "name": "_disputeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40010,
                        "src": "1821:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 40023,
                      "name": "VotingPhaseStarted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 43742,
                      "src": "1785:18:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$",
                        "typeString": "function (uint256,bytes32)"
                      }
                    },
                    "id": 40027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1785:47:52",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 40028,
                  "nodeType": "EmitStatement",
                  "src": "1780:52:52"
                }
              ]
            },
            "baseFunctions": [
              43810
            ],
            "documentation": {
              "id": 40008,
              "nodeType": "StructuredDocumentation",
              "src": "1611:38:52",
              "text": "@inheritdoc IERC20ResolutionModule"
            },
            "functionSelector": "d96dd0e7",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 40013,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 40012,
                  "name": "onlyOracle",
                  "nameLocations": [
                    "1706:10:52"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 41,
                  "src": "1706:10:52"
                },
                "nodeType": "ModifierInvocation",
                "src": "1706:10:52"
              }
            ],
            "name": "startResolution",
            "nameLocation": "1661:15:52",
            "parameters": {
              "id": 40011,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40010,
                  "mutability": "mutable",
                  "name": "_disputeId",
                  "nameLocation": "1685:10:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 40030,
                  "src": "1677:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40009,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1677:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1676:20:52"
            },
            "returnParameters": {
              "id": 40014,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1717:0:52"
            },
            "scope": 40347,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 40152,
            "nodeType": "FunctionDefinition",
            "src": "1882:1031:52",
            "nodes": [],
            "body": {
              "id": 40151,
              "nodeType": "Block",
              "src": "1971:942:52",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    40044
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40044,
                      "mutability": "mutable",
                      "name": "_dispute",
                      "nameLocation": "2000:8:52",
                      "nodeType": "VariableDeclaration",
                      "scope": 40151,
                      "src": "1977:31:52",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                        "typeString": "struct IOracle.Dispute"
                      },
                      "typeName": {
                        "id": 40043,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40042,
                          "name": "IOracle.Dispute",
                          "nameLocations": [
                            "1977:7:52",
                            "1985:7:52"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 2045,
                          "src": "1977:15:52"
                        },
                        "referencedDeclaration": 2045,
                        "src": "1977:15:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_storage_ptr",
                          "typeString": "struct IOracle.Dispute"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40049,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 40047,
                        "name": "_disputeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40035,
                        "src": "2029:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 40045,
                        "name": "ORACLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "2011:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracle_$2282",
                          "typeString": "contract IOracle"
                        }
                      },
                      "id": 40046,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2018:10:52",
                      "memberName": "getDispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2162,
                      "src": "2011:17:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_Dispute_$2045_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct IOracle.Dispute memory)"
                      }
                    },
                    "id": 40048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2011:29:52",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                      "typeString": "struct IOracle.Dispute memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1977:63:52"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40050,
                        "name": "_dispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40044,
                        "src": "2050:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                          "typeString": "struct IOracle.Dispute memory"
                        }
                      },
                      "id": 40051,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2059:9:52",
                      "memberName": "createdAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2033,
                      "src": "2050:18:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 40052,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2072:1:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2050:23:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40057,
                  "nodeType": "IfStatement",
                  "src": "2046:78:52",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40054,
                        "name": "ERC20ResolutionModule_NonExistentDispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43760,
                        "src": "2082:40:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40055,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2082:42:52",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40056,
                    "nodeType": "RevertStatement",
                    "src": "2075:49:52"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                      "typeString": "enum IOracle.DisputeStatus"
                    },
                    "id": 40063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40058,
                        "name": "_dispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40044,
                        "src": "2134:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                          "typeString": "struct IOracle.Dispute memory"
                        }
                      },
                      "id": 40059,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2143:6:52",
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2044,
                      "src": "2134:15:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                        "typeString": "enum IOracle.DisputeStatus"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 40060,
                          "name": "IOracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2282,
                          "src": "2153:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                            "typeString": "type(contract IOracle)"
                          }
                        },
                        "id": 40061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2161:13:52",
                        "memberName": "DisputeStatus",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2052,
                        "src": "2153:21:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                          "typeString": "type(enum IOracle.DisputeStatus)"
                        }
                      },
                      "id": 40062,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "2175:4:52",
                      "memberName": "None",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2046,
                      "src": "2153:26:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                        "typeString": "enum IOracle.DisputeStatus"
                      }
                    },
                    "src": "2134:45:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40067,
                  "nodeType": "IfStatement",
                  "src": "2130:97:52",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40064,
                        "name": "ERC20ResolutionModule_AlreadyResolved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43763,
                        "src": "2188:37:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40065,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2188:39:52",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40066,
                    "nodeType": "RevertStatement",
                    "src": "2181:46:52"
                  }
                },
                {
                  "assignments": [
                    40070
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40070,
                      "mutability": "mutable",
                      "name": "_escalation",
                      "nameLocation": "2252:11:52",
                      "nodeType": "VariableDeclaration",
                      "scope": 40151,
                      "src": "2234:29:52",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Escalation_$43776_memory_ptr",
                        "typeString": "struct IERC20ResolutionModule.Escalation"
                      },
                      "typeName": {
                        "id": 40069,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40068,
                          "name": "Escalation",
                          "nameLocations": [
                            "2234:10:52"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43776,
                          "src": "2234:10:52"
                        },
                        "referencedDeclaration": 43776,
                        "src": "2234:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43776_storage_ptr",
                          "typeString": "struct IERC20ResolutionModule.Escalation"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40074,
                  "initialValue": {
                    "baseExpression": {
                      "id": 40071,
                      "name": "escalations",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 39955,
                      "src": "2266:11:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43776_storage_$",
                        "typeString": "mapping(bytes32 => struct IERC20ResolutionModule.Escalation storage ref)"
                      }
                    },
                    "id": 40073,
                    "indexExpression": {
                      "id": 40072,
                      "name": "_disputeId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40035,
                      "src": "2278:10:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2266:23:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Escalation_$43776_storage",
                      "typeString": "struct IERC20ResolutionModule.Escalation storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2234:55:52"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40075,
                        "name": "_escalation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40070,
                        "src": "2299:11:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43776_memory_ptr",
                          "typeString": "struct IERC20ResolutionModule.Escalation memory"
                        }
                      },
                      "id": 40076,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2311:9:52",
                      "memberName": "startTime",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43773,
                      "src": "2299:21:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 40077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2324:1:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2299:26:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40082,
                  "nodeType": "IfStatement",
                  "src": "2295:82:52",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40079,
                        "name": "ERC20ResolutionModule_DisputeNotEscalated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43748,
                        "src": "2334:41:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40080,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2334:43:52",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40081,
                    "nodeType": "RevertStatement",
                    "src": "2327:50:52"
                  }
                },
                {
                  "assignments": [
                    40085
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40085,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "2409:7:52",
                      "nodeType": "VariableDeclaration",
                      "scope": 40151,
                      "src": "2384:32:52",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                        "typeString": "struct IERC20ResolutionModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 40084,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40083,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "2384:17:52"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43771,
                          "src": "2384:17:52"
                        },
                        "referencedDeclaration": 43771,
                        "src": "2384:17:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43771_storage_ptr",
                          "typeString": "struct IERC20ResolutionModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40089,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 40087,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40033,
                        "src": "2437:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 40086,
                      "name": "decodeRequestData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40007,
                      "src": "2419:17:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_RequestParameters_$43771_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct IERC20ResolutionModule.RequestParameters memory)"
                      }
                    },
                    "id": 40088,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2419:29:52",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                      "typeString": "struct IERC20ResolutionModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2384:64:52"
                },
                {
                  "assignments": [
                    40091
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40091,
                      "mutability": "mutable",
                      "name": "_deadline",
                      "nameLocation": "2462:9:52",
                      "nodeType": "VariableDeclaration",
                      "scope": 40151,
                      "src": "2454:17:52",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40090,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2454:7:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40097,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40092,
                        "name": "_escalation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40070,
                        "src": "2474:11:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43776_memory_ptr",
                          "typeString": "struct IERC20ResolutionModule.Escalation memory"
                        }
                      },
                      "id": 40093,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2486:9:52",
                      "memberName": "startTime",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43773,
                      "src": "2474:21:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "expression": {
                        "id": 40094,
                        "name": "_params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40085,
                        "src": "2498:7:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                          "typeString": "struct IERC20ResolutionModule.RequestParameters memory"
                        }
                      },
                      "id": 40095,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2506:17:52",
                      "memberName": "timeUntilDeadline",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43770,
                      "src": "2498:25:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2474:49:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2454:69:52"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40098,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "2533:5:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 40099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2539:9:52",
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "2533:15:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "id": 40100,
                      "name": "_deadline",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40091,
                      "src": "2552:9:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2533:28:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40105,
                  "nodeType": "IfStatement",
                  "src": "2529:80:52",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40102,
                        "name": "ERC20ResolutionModule_VotingPhaseOver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43754,
                        "src": "2570:37:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40103,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2570:39:52",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40104,
                    "nodeType": "RevertStatement",
                    "src": "2563:46:52"
                  }
                },
                {
                  "expression": {
                    "id": 40113,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 40106,
                          "name": "votes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39962,
                          "src": "2616:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(bytes32 => mapping(address => uint256))"
                          }
                        },
                        "id": 40110,
                        "indexExpression": {
                          "id": 40107,
                          "name": "_disputeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40035,
                          "src": "2622:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2616:17:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 40111,
                      "indexExpression": {
                        "expression": {
                          "id": 40108,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "2634:3:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 40109,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2638:6:52",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2634:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2616:29:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 40112,
                      "name": "_numberOfVotes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40037,
                      "src": "2649:14:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2616:47:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 40114,
                  "nodeType": "ExpressionStatement",
                  "src": "2616:47:52"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40119,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "2694:3:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 40120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2698:6:52",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2694:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "baseExpression": {
                          "id": 40115,
                          "name": "_voters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39967,
                          "src": "2670:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$5090_storage_$",
                            "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)"
                          }
                        },
                        "id": 40117,
                        "indexExpression": {
                          "id": 40116,
                          "name": "_disputeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40035,
                          "src": "2678:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2670:19:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$5090_storage",
                          "typeString": "struct EnumerableSet.AddressSet storage ref"
                        }
                      },
                      "id": 40118,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2690:3:52",
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5117,
                      "src": "2670:23:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$5090_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$5090_storage_ptr_$",
                        "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"
                      }
                    },
                    "id": 40121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2670:35:52",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40122,
                  "nodeType": "ExpressionStatement",
                  "src": "2670:35:52"
                },
                {
                  "expression": {
                    "id": 40128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "baseExpression": {
                          "id": 40123,
                          "name": "escalations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39955,
                          "src": "2711:11:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43776_storage_$",
                            "typeString": "mapping(bytes32 => struct IERC20ResolutionModule.Escalation storage ref)"
                          }
                        },
                        "id": 40125,
                        "indexExpression": {
                          "id": 40124,
                          "name": "_disputeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40035,
                          "src": "2723:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2711:23:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43776_storage",
                          "typeString": "struct IERC20ResolutionModule.Escalation storage ref"
                        }
                      },
                      "id": 40126,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "2735:10:52",
                      "memberName": "totalVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43775,
                      "src": "2711:34:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 40127,
                      "name": "_numberOfVotes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40037,
                      "src": "2749:14:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2711:52:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 40129,
                  "nodeType": "ExpressionStatement",
                  "src": "2711:52:52"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40135,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "2807:3:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 40136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2811:6:52",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2807:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 40139,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "2827:4:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20ResolutionModule_$40347",
                              "typeString": "contract ERC20ResolutionModule"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ERC20ResolutionModule_$40347",
                              "typeString": "contract ERC20ResolutionModule"
                            }
                          ],
                          "id": 40138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2819:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 40137,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2819:7:52",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 40140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2819:13:52",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 40141,
                        "name": "_numberOfVotes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40037,
                        "src": "2834:14:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 40130,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40085,
                          "src": "2770:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                            "typeString": "struct IERC20ResolutionModule.RequestParameters memory"
                          }
                        },
                        "id": 40133,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2778:11:52",
                        "memberName": "votingToken",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43766,
                        "src": "2770:19:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2822",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 40134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2790:16:52",
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2918,
                      "src": "2770:36:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2822_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$2822_$",
                        "typeString": "function (contract IERC20,address,address,uint256)"
                      }
                    },
                    "id": 40142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2770:79:52",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 40143,
                  "nodeType": "ExpressionStatement",
                  "src": "2770:79:52"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40145,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "2869:3:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 40146,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2873:6:52",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2869:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 40147,
                        "name": "_disputeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40035,
                        "src": "2881:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 40148,
                        "name": "_numberOfVotes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40037,
                        "src": "2893:14:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 40144,
                      "name": "VoteCast",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 43735,
                      "src": "2860:8:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,uint256)"
                      }
                    },
                    "id": 40149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2860:48:52",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 40150,
                  "nodeType": "EmitStatement",
                  "src": "2855:53:52"
                }
              ]
            },
            "baseFunctions": [
              43820
            ],
            "documentation": {
              "id": 40031,
              "nodeType": "StructuredDocumentation",
              "src": "1841:38:52",
              "text": "@inheritdoc IERC20ResolutionModule"
            },
            "functionSelector": "7e89ff59",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "castVote",
            "nameLocation": "1891:8:52",
            "parameters": {
              "id": 40038,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40033,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "1908:10:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 40152,
                  "src": "1900:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40032,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1900:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40035,
                  "mutability": "mutable",
                  "name": "_disputeId",
                  "nameLocation": "1928:10:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 40152,
                  "src": "1920:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40034,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1920:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40037,
                  "mutability": "mutable",
                  "name": "_numberOfVotes",
                  "nameLocation": "1948:14:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 40152,
                  "src": "1940:22:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40036,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1940:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1899:64:52"
            },
            "returnParameters": {
              "id": 40039,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1971:0:52"
            },
            "scope": 40347,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 40328,
            "nodeType": "FunctionDefinition",
            "src": "2958:1717:52",
            "nodes": [],
            "body": {
              "id": 40327,
              "nodeType": "Block",
              "src": "3022:1653:52",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    40164
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40164,
                      "mutability": "mutable",
                      "name": "_dispute",
                      "nameLocation": "3127:8:52",
                      "nodeType": "VariableDeclaration",
                      "scope": 40327,
                      "src": "3104:31:52",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                        "typeString": "struct IOracle.Dispute"
                      },
                      "typeName": {
                        "id": 40163,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40162,
                          "name": "IOracle.Dispute",
                          "nameLocations": [
                            "3104:7:52",
                            "3112:7:52"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 2045,
                          "src": "3104:15:52"
                        },
                        "referencedDeclaration": 2045,
                        "src": "3104:15:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_storage_ptr",
                          "typeString": "struct IOracle.Dispute"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40169,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 40167,
                        "name": "_disputeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40155,
                        "src": "3156:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 40165,
                        "name": "ORACLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "3138:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracle_$2282",
                          "typeString": "contract IOracle"
                        }
                      },
                      "id": 40166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3145:10:52",
                      "memberName": "getDispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2162,
                      "src": "3138:17:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_Dispute_$2045_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct IOracle.Dispute memory)"
                      }
                    },
                    "id": 40168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3138:29:52",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                      "typeString": "struct IOracle.Dispute memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3104:63:52"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40173,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40170,
                        "name": "_dispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40164,
                        "src": "3177:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                          "typeString": "struct IOracle.Dispute memory"
                        }
                      },
                      "id": 40171,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3186:9:52",
                      "memberName": "createdAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2033,
                      "src": "3177:18:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 40172,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3199:1:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3177:23:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40177,
                  "nodeType": "IfStatement",
                  "src": "3173:78:52",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40174,
                        "name": "ERC20ResolutionModule_NonExistentDispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43760,
                        "src": "3209:40:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40175,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3209:42:52",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40176,
                    "nodeType": "RevertStatement",
                    "src": "3202:49:52"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                      "typeString": "enum IOracle.DisputeStatus"
                    },
                    "id": 40183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40178,
                        "name": "_dispute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40164,
                        "src": "3261:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                          "typeString": "struct IOracle.Dispute memory"
                        }
                      },
                      "id": 40179,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3270:6:52",
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2044,
                      "src": "3261:15:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                        "typeString": "enum IOracle.DisputeStatus"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 40180,
                          "name": "IOracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2282,
                          "src": "3280:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                            "typeString": "type(contract IOracle)"
                          }
                        },
                        "id": 40181,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3288:13:52",
                        "memberName": "DisputeStatus",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2052,
                        "src": "3280:21:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                          "typeString": "type(enum IOracle.DisputeStatus)"
                        }
                      },
                      "id": 40182,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "3302:4:52",
                      "memberName": "None",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2046,
                      "src": "3280:26:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                        "typeString": "enum IOracle.DisputeStatus"
                      }
                    },
                    "src": "3261:45:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40187,
                  "nodeType": "IfStatement",
                  "src": "3257:97:52",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40184,
                        "name": "ERC20ResolutionModule_AlreadyResolved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43763,
                        "src": "3315:37:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3315:39:52",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40186,
                    "nodeType": "RevertStatement",
                    "src": "3308:46:52"
                  }
                },
                {
                  "assignments": [
                    40190
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40190,
                      "mutability": "mutable",
                      "name": "_escalation",
                      "nameLocation": "3379:11:52",
                      "nodeType": "VariableDeclaration",
                      "scope": 40327,
                      "src": "3361:29:52",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Escalation_$43776_memory_ptr",
                        "typeString": "struct IERC20ResolutionModule.Escalation"
                      },
                      "typeName": {
                        "id": 40189,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40188,
                          "name": "Escalation",
                          "nameLocations": [
                            "3361:10:52"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43776,
                          "src": "3361:10:52"
                        },
                        "referencedDeclaration": 43776,
                        "src": "3361:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43776_storage_ptr",
                          "typeString": "struct IERC20ResolutionModule.Escalation"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40194,
                  "initialValue": {
                    "baseExpression": {
                      "id": 40191,
                      "name": "escalations",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 39955,
                      "src": "3393:11:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Escalation_$43776_storage_$",
                        "typeString": "mapping(bytes32 => struct IERC20ResolutionModule.Escalation storage ref)"
                      }
                    },
                    "id": 40193,
                    "indexExpression": {
                      "id": 40192,
                      "name": "_disputeId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40155,
                      "src": "3405:10:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3393:23:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Escalation_$43776_storage",
                      "typeString": "struct IERC20ResolutionModule.Escalation storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3361:55:52"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40195,
                        "name": "_escalation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40190,
                        "src": "3481:11:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43776_memory_ptr",
                          "typeString": "struct IERC20ResolutionModule.Escalation memory"
                        }
                      },
                      "id": 40196,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3493:9:52",
                      "memberName": "startTime",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43773,
                      "src": "3481:21:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 40197,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3506:1:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3481:26:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40202,
                  "nodeType": "IfStatement",
                  "src": "3477:82:52",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40199,
                        "name": "ERC20ResolutionModule_DisputeNotEscalated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43748,
                        "src": "3516:41:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40200,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3516:43:52",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40201,
                    "nodeType": "RevertStatement",
                    "src": "3509:50:52"
                  }
                },
                {
                  "assignments": [
                    40205
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40205,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "3636:7:52",
                      "nodeType": "VariableDeclaration",
                      "scope": 40327,
                      "src": "3611:32:52",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                        "typeString": "struct IERC20ResolutionModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 40204,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 40203,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "3611:17:52"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43771,
                          "src": "3611:17:52"
                        },
                        "referencedDeclaration": 43771,
                        "src": "3611:17:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43771_storage_ptr",
                          "typeString": "struct IERC20ResolutionModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40210,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40207,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40164,
                          "src": "3664:8:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                            "typeString": "struct IOracle.Dispute memory"
                          }
                        },
                        "id": 40208,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3673:9:52",
                        "memberName": "requestId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2041,
                        "src": "3664:18:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 40206,
                      "name": "decodeRequestData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40007,
                      "src": "3646:17:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_RequestParameters_$43771_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct IERC20ResolutionModule.RequestParameters memory)"
                      }
                    },
                    "id": 40209,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3646:37:52",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                      "typeString": "struct IERC20ResolutionModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3611:72:52"
                },
                {
                  "assignments": [
                    40212
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40212,
                      "mutability": "mutable",
                      "name": "_deadline",
                      "nameLocation": "3697:9:52",
                      "nodeType": "VariableDeclaration",
                      "scope": 40327,
                      "src": "3689:17:52",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40211,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3689:7:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40218,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40213,
                        "name": "_escalation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40190,
                        "src": "3709:11:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Escalation_$43776_memory_ptr",
                          "typeString": "struct IERC20ResolutionModule.Escalation memory"
                        }
                      },
                      "id": 40214,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3721:9:52",
                      "memberName": "startTime",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43773,
                      "src": "3709:21:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "expression": {
                        "id": 40215,
                        "name": "_params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40205,
                        "src": "3733:7:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                          "typeString": "struct IERC20ResolutionModule.RequestParameters memory"
                        }
                      },
                      "id": 40216,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3741:17:52",
                      "memberName": "timeUntilDeadline",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43770,
                      "src": "3733:25:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3709:49:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3689:69:52"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 40219,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "3768:5:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 40220,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3774:9:52",
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "3768:15:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 40221,
                      "name": "_deadline",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40212,
                      "src": "3786:9:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3768:27:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40226,
                  "nodeType": "IfStatement",
                  "src": "3764:82:52",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 40223,
                        "name": "ERC20ResolutionModule_OnGoingVotingPhase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43757,
                        "src": "3804:40:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 40224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3804:42:52",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 40225,
                    "nodeType": "RevertStatement",
                    "src": "3797:49:52"
                  }
                },
                {
                  "assignments": [
                    40228
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40228,
                      "mutability": "mutable",
                      "name": "_quorumReached",
                      "nameLocation": "3861:14:52",
                      "nodeType": "VariableDeclaration",
                      "scope": 40327,
                      "src": "3853:22:52",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40227,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3853:7:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40237,
                  "initialValue": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 40233,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 40229,
                          "name": "_escalation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40190,
                          "src": "3878:11:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Escalation_$43776_memory_ptr",
                            "typeString": "struct IERC20ResolutionModule.Escalation memory"
                          }
                        },
                        "id": 40230,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3890:10:52",
                        "memberName": "totalVotes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43775,
                        "src": "3878:22:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "expression": {
                          "id": 40231,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40205,
                          "src": "3904:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                            "typeString": "struct IERC20ResolutionModule.RequestParameters memory"
                          }
                        },
                        "id": 40232,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3912:17:52",
                        "memberName": "minVotesForQuorum",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43768,
                        "src": "3904:25:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3878:51:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "hexValue": "30",
                      "id": 40235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3936:1:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "id": 40236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "3878:59:52",
                    "trueExpression": {
                      "hexValue": "31",
                      "id": 40234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3932:1:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3853:84:52"
                },
                {
                  "assignments": [
                    40242
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40242,
                      "mutability": "mutable",
                      "name": "__voters",
                      "nameLocation": "3961:8:52",
                      "nodeType": "VariableDeclaration",
                      "scope": 40327,
                      "src": "3944:25:52",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 40240,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3944:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 40241,
                        "nodeType": "ArrayTypeName",
                        "src": "3944:9:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40248,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "baseExpression": {
                          "id": 40243,
                          "name": "_voters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39967,
                          "src": "3972:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$5090_storage_$",
                            "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)"
                          }
                        },
                        "id": 40245,
                        "indexExpression": {
                          "id": 40244,
                          "name": "_disputeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40155,
                          "src": "3980:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3972:19:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$5090_storage",
                          "typeString": "struct EnumerableSet.AddressSet storage ref"
                        }
                      },
                      "id": 40246,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3992:6:52",
                      "memberName": "values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5243,
                      "src": "3972:26:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$5090_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$5090_storage_ptr_$",
                        "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (address[] memory)"
                      }
                    },
                    "id": 40247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3972:28:52",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3944:56:52"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 40249,
                      "name": "_quorumReached",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40228,
                      "src": "4035:14:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 40250,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4053:1:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "4035:19:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 40289,
                    "nodeType": "Block",
                    "src": "4229:169:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 40274,
                              "name": "_disputeId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40155,
                              "src": "4264:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 40275,
                                  "name": "IOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2282,
                                  "src": "4276:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                                    "typeString": "type(contract IOracle)"
                                  }
                                },
                                "id": 40276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4284:13:52",
                                "memberName": "DisputeStatus",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2052,
                                "src": "4276:21:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                                  "typeString": "type(enum IOracle.DisputeStatus)"
                                }
                              },
                              "id": 40277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4298:4:52",
                              "memberName": "Lost",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2050,
                              "src": "4276:26:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            ],
                            "expression": {
                              "id": 40271,
                              "name": "ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "4237:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IOracle_$2282",
                                "typeString": "contract IOracle"
                              }
                            },
                            "id": 40273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4244:19:52",
                            "memberName": "updateDisputeStatus",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2221,
                            "src": "4237:26:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_enum$_DisputeStatus_$2052_$returns$__$",
                              "typeString": "function (bytes32,enum IOracle.DisputeStatus) external"
                            }
                          },
                          "id": 40278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4237:66:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40279,
                        "nodeType": "ExpressionStatement",
                        "src": "4237:66:52"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 40281,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40164,
                                "src": "4332:8:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 40282,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4341:9:52",
                              "memberName": "requestId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2041,
                              "src": "4332:18:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 40283,
                              "name": "_disputeId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40155,
                              "src": "4352:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 40284,
                                  "name": "IOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2282,
                                  "src": "4364:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                                    "typeString": "type(contract IOracle)"
                                  }
                                },
                                "id": 40285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4372:13:52",
                                "memberName": "DisputeStatus",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2052,
                                "src": "4364:21:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                                  "typeString": "type(enum IOracle.DisputeStatus)"
                                }
                              },
                              "id": 40286,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4386:4:52",
                              "memberName": "Lost",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2050,
                              "src": "4364:26:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            ],
                            "id": 40280,
                            "name": "DisputeResolved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2379,
                            "src": "4316:15:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_enum$_DisputeStatus_$2052_$returns$__$",
                              "typeString": "function (bytes32,bytes32,enum IOracle.DisputeStatus)"
                            }
                          },
                          "id": 40287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4316:75:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40288,
                        "nodeType": "EmitStatement",
                        "src": "4311:80:52"
                      }
                    ]
                  },
                  "id": 40290,
                  "nodeType": "IfStatement",
                  "src": "4031:367:52",
                  "trueBody": {
                    "id": 40270,
                    "nodeType": "Block",
                    "src": "4056:167:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 40255,
                              "name": "_disputeId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40155,
                              "src": "4091:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 40256,
                                  "name": "IOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2282,
                                  "src": "4103:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                                    "typeString": "type(contract IOracle)"
                                  }
                                },
                                "id": 40257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4111:13:52",
                                "memberName": "DisputeStatus",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2052,
                                "src": "4103:21:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                                  "typeString": "type(enum IOracle.DisputeStatus)"
                                }
                              },
                              "id": 40258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4125:3:52",
                              "memberName": "Won",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2049,
                              "src": "4103:25:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            ],
                            "expression": {
                              "id": 40252,
                              "name": "ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "4064:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IOracle_$2282",
                                "typeString": "contract IOracle"
                              }
                            },
                            "id": 40254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4071:19:52",
                            "memberName": "updateDisputeStatus",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2221,
                            "src": "4064:26:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_enum$_DisputeStatus_$2052_$returns$__$",
                              "typeString": "function (bytes32,enum IOracle.DisputeStatus) external"
                            }
                          },
                          "id": 40259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4064:65:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40260,
                        "nodeType": "ExpressionStatement",
                        "src": "4064:65:52"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 40262,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40164,
                                "src": "4158:8:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 40263,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4167:9:52",
                              "memberName": "requestId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2041,
                              "src": "4158:18:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 40264,
                              "name": "_disputeId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40155,
                              "src": "4178:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 40265,
                                  "name": "IOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2282,
                                  "src": "4190:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                                    "typeString": "type(contract IOracle)"
                                  }
                                },
                                "id": 40266,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4198:13:52",
                                "memberName": "DisputeStatus",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2052,
                                "src": "4190:21:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                                  "typeString": "type(enum IOracle.DisputeStatus)"
                                }
                              },
                              "id": 40267,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4212:3:52",
                              "memberName": "Won",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2049,
                              "src": "4190:25:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                                "typeString": "enum IOracle.DisputeStatus"
                              }
                            ],
                            "id": 40261,
                            "name": "DisputeResolved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2379,
                            "src": "4142:15:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_enum$_DisputeStatus_$2052_$returns$__$",
                              "typeString": "function (bytes32,bytes32,enum IOracle.DisputeStatus)"
                            }
                          },
                          "id": 40268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4142:74:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40269,
                        "nodeType": "EmitStatement",
                        "src": "4137:79:52"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    40292
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40292,
                      "mutability": "mutable",
                      "name": "_votersLength",
                      "nameLocation": "4412:13:52",
                      "nodeType": "VariableDeclaration",
                      "scope": 40327,
                      "src": "4404:21:52",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40291,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4404:7:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40295,
                  "initialValue": {
                    "expression": {
                      "id": 40293,
                      "name": "__voters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40242,
                      "src": "4428:8:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "id": 40294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "4437:6:52",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "4428:15:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4404:39:52"
                },
                {
                  "body": {
                    "id": 40325,
                    "nodeType": "Block",
                    "src": "4512:159:52",
                    "statements": [
                      {
                        "assignments": [
                          40303
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 40303,
                            "mutability": "mutable",
                            "name": "_voter",
                            "nameLocation": "4528:6:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 40325,
                            "src": "4520:14:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 40302,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4520:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 40307,
                        "initialValue": {
                          "baseExpression": {
                            "id": 40304,
                            "name": "__voters",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40242,
                            "src": "4537:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 40306,
                          "indexExpression": {
                            "id": 40305,
                            "name": "_i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40297,
                            "src": "4546:2:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4537:12:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4520:29:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 40313,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40303,
                              "src": "4590:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 40314,
                                  "name": "votes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39962,
                                  "src": "4598:5:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                    "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                  }
                                },
                                "id": 40316,
                                "indexExpression": {
                                  "id": 40315,
                                  "name": "_disputeId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40155,
                                  "src": "4604:10:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4598:17:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 40318,
                              "indexExpression": {
                                "id": 40317,
                                "name": "_voter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40303,
                                "src": "4616:6:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4598:25:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 40308,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40205,
                                "src": "4557:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestParameters_$43771_memory_ptr",
                                  "typeString": "struct IERC20ResolutionModule.RequestParameters memory"
                                }
                              },
                              "id": 40311,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4565:11:52",
                              "memberName": "votingToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43766,
                              "src": "4557:19:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2822",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 40312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4577:12:52",
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2891,
                            "src": "4557:32:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2822_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$2822_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 40319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4557:67:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40320,
                        "nodeType": "ExpressionStatement",
                        "src": "4557:67:52"
                      },
                      {
                        "id": 40324,
                        "nodeType": "UncheckedBlock",
                        "src": "4632:33:52",
                        "statements": [
                          {
                            "expression": {
                              "id": 40322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "4652:4:52",
                              "subExpression": {
                                "id": 40321,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40297,
                                "src": "4654:2:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 40323,
                            "nodeType": "ExpressionStatement",
                            "src": "4652:4:52"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40301,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 40299,
                      "name": "_i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40297,
                      "src": "4491:2:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 40300,
                      "name": "_votersLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40292,
                      "src": "4496:13:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4491:18:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40326,
                  "initializationExpression": {
                    "assignments": [
                      40297
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 40297,
                        "mutability": "mutable",
                        "name": "_i",
                        "nameLocation": "4487:2:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 40326,
                        "src": "4479:10:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40296,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4479:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 40298,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4479:10:52"
                  },
                  "nodeType": "ForStatement",
                  "src": "4474:197:52"
                }
              ]
            },
            "baseFunctions": [
              43826
            ],
            "documentation": {
              "id": 40153,
              "nodeType": "StructuredDocumentation",
              "src": "2917:38:52",
              "text": "@inheritdoc IERC20ResolutionModule"
            },
            "functionSelector": "c8218e3e",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 40158,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 40157,
                  "name": "onlyOracle",
                  "nameLocations": [
                    "3011:10:52"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 41,
                  "src": "3011:10:52"
                },
                "nodeType": "ModifierInvocation",
                "src": "3011:10:52"
              }
            ],
            "name": "resolveDispute",
            "nameLocation": "2967:14:52",
            "parameters": {
              "id": 40156,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40155,
                  "mutability": "mutable",
                  "name": "_disputeId",
                  "nameLocation": "2990:10:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 40328,
                  "src": "2982:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40154,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2982:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2981:20:52"
            },
            "returnParameters": {
              "id": 40159,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3022:0:52"
            },
            "scope": 40347,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 40346,
            "nodeType": "FunctionDefinition",
            "src": "4720:139:52",
            "nodes": [],
            "body": {
              "id": 40345,
              "nodeType": "Block",
              "src": "4809:50:52",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 40343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 40337,
                      "name": "__voters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40335,
                      "src": "4815:8:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "baseExpression": {
                            "id": 40338,
                            "name": "_voters",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39967,
                            "src": "4826:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$5090_storage_$",
                              "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)"
                            }
                          },
                          "id": 40340,
                          "indexExpression": {
                            "id": 40339,
                            "name": "_disputeId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40331,
                            "src": "4834:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4826:19:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$5090_storage",
                            "typeString": "struct EnumerableSet.AddressSet storage ref"
                          }
                        },
                        "id": 40341,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4846:6:52",
                        "memberName": "values",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5243,
                        "src": "4826:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$5090_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$5090_storage_ptr_$",
                          "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (address[] memory)"
                        }
                      },
                      "id": 40342,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4826:28:52",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "src": "4815:39:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "id": 40344,
                  "nodeType": "ExpressionStatement",
                  "src": "4815:39:52"
                }
              ]
            },
            "baseFunctions": [
              43835
            ],
            "documentation": {
              "id": 40329,
              "nodeType": "StructuredDocumentation",
              "src": "4679:38:52",
              "text": "@inheritdoc IERC20ResolutionModule"
            },
            "functionSelector": "8b4a781c",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getVoters",
            "nameLocation": "4729:9:52",
            "parameters": {
              "id": 40332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40331,
                  "mutability": "mutable",
                  "name": "_disputeId",
                  "nameLocation": "4747:10:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 40346,
                  "src": "4739:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 40330,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4739:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4738:20:52"
            },
            "returnParameters": {
              "id": 40336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40335,
                  "mutability": "mutable",
                  "name": "__voters",
                  "nameLocation": "4799:8:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 40346,
                  "src": "4782:25:52",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 40333,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4782:7:52",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 40334,
                    "nodeType": "ArrayTypeName",
                    "src": "4782:9:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4781:27:52"
            },
            "scope": 40347,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 39938,
              "name": "Module",
              "nameLocations": [
                "734:6:52"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 98,
              "src": "734:6:52"
            },
            "id": 39939,
            "nodeType": "InheritanceSpecifier",
            "src": "734:6:52"
          },
          {
            "baseName": {
              "id": 39940,
              "name": "IERC20ResolutionModule",
              "nameLocations": [
                "742:22:52"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 43836,
              "src": "742:22:52"
            },
            "id": 39941,
            "nodeType": "InheritanceSpecifier",
            "src": "742:22:52"
          }
        ],
        "canonicalName": "ERC20ResolutionModule",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          40347,
          43836,
          2399,
          98,
          1782
        ],
        "name": "ERC20ResolutionModule",
        "nameLocation": "709:21:52",
        "scope": 40348,
        "usedErrors": [
          1745,
          43745,
          43748,
          43751,
          43754,
          43757,
          43760,
          43763
        ]
      }
    ],
    "license": "MIT"
  },
  "id": 52
}