{
  "contractName": "NaiveCreditorProxy",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "name": "kernelVersion",
              "type": "address"
            },
            {
              "name": "issuanceVersion",
              "type": "address"
            },
            {
              "name": "principalAmount",
              "type": "uint256"
            },
            {
              "name": "principalToken",
              "type": "address"
            },
            {
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "name": "collateralToken",
              "type": "address"
            },
            {
              "name": "debtor",
              "type": "address"
            },
            {
              "name": "debtorFee",
              "type": "uint256"
            },
            {
              "name": "creditor",
              "type": "address"
            },
            {
              "name": "creditorFee",
              "type": "uint256"
            },
            {
              "name": "relayer",
              "type": "address"
            },
            {
              "name": "relayerFee",
              "type": "uint256"
            },
            {
              "name": "underwriter",
              "type": "address"
            },
            {
              "name": "underwriterFee",
              "type": "uint256"
            },
            {
              "name": "underwriterRiskRating",
              "type": "uint256"
            },
            {
              "name": "termsContract",
              "type": "address"
            },
            {
              "name": "termsContractParameters",
              "type": "bytes32"
            },
            {
              "name": "expirationTimestampInSec",
              "type": "uint256"
            },
            {
              "name": "salt",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "debtorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "creditorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "underwriterSignature",
              "type": "tuple"
            }
          ],
          "name": "order",
          "type": "tuple"
        }
      ],
      "name": "hashCreditorCommitmentForOrder",
      "outputs": [
        {
          "name": "_creditorCommitmentHash",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "signer",
          "type": "address"
        },
        {
          "name": "hash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "name": "v",
              "type": "uint8"
            },
            {
              "name": "r",
              "type": "bytes32"
            },
            {
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "signature",
          "type": "tuple"
        }
      ],
      "name": "isValidSignature",
      "outputs": [
        {
          "name": "valid",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "debtOfferCancelled",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "contractRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "debtOfferFilled",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "name": "kernelVersion",
              "type": "address"
            },
            {
              "name": "issuanceVersion",
              "type": "address"
            },
            {
              "name": "principalAmount",
              "type": "uint256"
            },
            {
              "name": "principalToken",
              "type": "address"
            },
            {
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "name": "collateralToken",
              "type": "address"
            },
            {
              "name": "debtor",
              "type": "address"
            },
            {
              "name": "debtorFee",
              "type": "uint256"
            },
            {
              "name": "creditor",
              "type": "address"
            },
            {
              "name": "creditorFee",
              "type": "uint256"
            },
            {
              "name": "relayer",
              "type": "address"
            },
            {
              "name": "relayerFee",
              "type": "uint256"
            },
            {
              "name": "underwriter",
              "type": "address"
            },
            {
              "name": "underwriterFee",
              "type": "uint256"
            },
            {
              "name": "underwriterRiskRating",
              "type": "uint256"
            },
            {
              "name": "termsContract",
              "type": "address"
            },
            {
              "name": "termsContractParameters",
              "type": "bytes32"
            },
            {
              "name": "expirationTimestampInSec",
              "type": "uint256"
            },
            {
              "name": "salt",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "debtorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "creditorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "underwriterSignature",
              "type": "tuple"
            }
          ],
          "name": "order",
          "type": "tuple"
        },
        {
          "name": "commitmentHash",
          "type": "bytes32"
        }
      ],
      "name": "evaluateConsent",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "name": "kernelVersion",
              "type": "address"
            },
            {
              "name": "issuanceVersion",
              "type": "address"
            },
            {
              "name": "principalAmount",
              "type": "uint256"
            },
            {
              "name": "principalToken",
              "type": "address"
            },
            {
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "name": "collateralToken",
              "type": "address"
            },
            {
              "name": "debtor",
              "type": "address"
            },
            {
              "name": "debtorFee",
              "type": "uint256"
            },
            {
              "name": "creditor",
              "type": "address"
            },
            {
              "name": "creditorFee",
              "type": "uint256"
            },
            {
              "name": "relayer",
              "type": "address"
            },
            {
              "name": "relayerFee",
              "type": "uint256"
            },
            {
              "name": "underwriter",
              "type": "address"
            },
            {
              "name": "underwriterFee",
              "type": "uint256"
            },
            {
              "name": "underwriterRiskRating",
              "type": "uint256"
            },
            {
              "name": "termsContract",
              "type": "address"
            },
            {
              "name": "termsContractParameters",
              "type": "bytes32"
            },
            {
              "name": "expirationTimestampInSec",
              "type": "uint256"
            },
            {
              "name": "salt",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "debtorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "creditorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "underwriterSignature",
              "type": "tuple"
            }
          ],
          "name": "order",
          "type": "tuple"
        }
      ],
      "name": "unpackDebtOrder",
      "outputs": [
        {
          "name": "orderAddresses",
          "type": "address[6]"
        },
        {
          "name": "orderValues",
          "type": "uint256[8]"
        },
        {
          "name": "orderBytes32",
          "type": "bytes32[1]"
        },
        {
          "name": "signaturesV",
          "type": "uint8[3]"
        },
        {
          "name": "signaturesR",
          "type": "bytes32[3]"
        },
        {
          "name": "signaturesS",
          "type": "bytes32[3]"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "EXTERNAL_QUERY_GAS_LIMIT",
      "outputs": [
        {
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_contractRegistry",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_creditor",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_creditorCommitmentHash",
          "type": "bytes32"
        }
      ],
      "name": "DebtOfferCancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_creditor",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_creditorCommitmentHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_agreementId",
          "type": "bytes32"
        }
      ],
      "name": "DebtOfferFilled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_errorId",
          "type": "uint8"
        },
        {
          "indexed": true,
          "name": "_creditor",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_creditorCommitmentHash",
          "type": "bytes32"
        }
      ],
      "name": "CreditorProxyError",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "name": "kernelVersion",
              "type": "address"
            },
            {
              "name": "issuanceVersion",
              "type": "address"
            },
            {
              "name": "principalAmount",
              "type": "uint256"
            },
            {
              "name": "principalToken",
              "type": "address"
            },
            {
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "name": "collateralToken",
              "type": "address"
            },
            {
              "name": "debtor",
              "type": "address"
            },
            {
              "name": "debtorFee",
              "type": "uint256"
            },
            {
              "name": "creditor",
              "type": "address"
            },
            {
              "name": "creditorFee",
              "type": "uint256"
            },
            {
              "name": "relayer",
              "type": "address"
            },
            {
              "name": "relayerFee",
              "type": "uint256"
            },
            {
              "name": "underwriter",
              "type": "address"
            },
            {
              "name": "underwriterFee",
              "type": "uint256"
            },
            {
              "name": "underwriterRiskRating",
              "type": "uint256"
            },
            {
              "name": "termsContract",
              "type": "address"
            },
            {
              "name": "termsContractParameters",
              "type": "bytes32"
            },
            {
              "name": "expirationTimestampInSec",
              "type": "uint256"
            },
            {
              "name": "salt",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "debtorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "creditorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "underwriterSignature",
              "type": "tuple"
            }
          ],
          "name": "order",
          "type": "tuple"
        }
      ],
      "name": "fillDebtOffer",
      "outputs": [
        {
          "name": "agreementId",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "name": "kernelVersion",
              "type": "address"
            },
            {
              "name": "issuanceVersion",
              "type": "address"
            },
            {
              "name": "principalAmount",
              "type": "uint256"
            },
            {
              "name": "principalToken",
              "type": "address"
            },
            {
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "name": "collateralToken",
              "type": "address"
            },
            {
              "name": "debtor",
              "type": "address"
            },
            {
              "name": "debtorFee",
              "type": "uint256"
            },
            {
              "name": "creditor",
              "type": "address"
            },
            {
              "name": "creditorFee",
              "type": "uint256"
            },
            {
              "name": "relayer",
              "type": "address"
            },
            {
              "name": "relayerFee",
              "type": "uint256"
            },
            {
              "name": "underwriter",
              "type": "address"
            },
            {
              "name": "underwriterFee",
              "type": "uint256"
            },
            {
              "name": "underwriterRiskRating",
              "type": "uint256"
            },
            {
              "name": "termsContract",
              "type": "address"
            },
            {
              "name": "termsContractParameters",
              "type": "bytes32"
            },
            {
              "name": "expirationTimestampInSec",
              "type": "uint256"
            },
            {
              "name": "salt",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "debtorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "creditorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "underwriterSignature",
              "type": "tuple"
            }
          ],
          "name": "order",
          "type": "tuple"
        }
      ],
      "name": "cancelDebtOffer",
      "outputs": [
        {
          "name": "succeeded",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405160208062002137833981018060405262000033919081019062000091565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620000dd565b6000620000898251620000bd565b905092915050565b600060208284031215620000a457600080fd5b6000620000b4848285016200007b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b61204a80620000ed6000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063072f262e146100a95780631ca54006146100e6578063578911ac14610123578063a318b5f714610160578063abc154801461019d578063abf410e5146101da578063c1614d0014610205578063d46b836d14610242578063e301885c1461027f578063f06bbf75146102c1575b600080fd5b3480156100b557600080fd5b506100d060048036036100cb91908101906119c4565b6102ec565b6040516100dd9190611db3565b60405180910390f35b3480156100f257600080fd5b5061010d600480360361010891908101906119c4565b6104b0565b60405161011a9190611d98565b60405180910390f35b34801561012f57600080fd5b5061014a6004803603610145919081019061187f565b6105c3565b6040516101579190611d98565b60405180910390f35b34801561016c57600080fd5b50610187600480360361018291908101906118f7565b610705565b6040516101949190611d98565b60405180910390f35b3480156101a957600080fd5b506101c460048036036101bf91908101906119c4565b610725565b6040516101d19190611db3565b60405180910390f35b3480156101e657600080fd5b506101ef610c18565b6040516101fc9190611e13565b60405180910390f35b34801561021157600080fd5b5061022c600480360361022791908101906118f7565b610c3e565b6040516102399190611d98565b60405180910390f35b34801561024e57600080fd5b50610269600480360361026491908101906119ee565b610c5e565b6040516102769190611d98565b60405180910390f35b34801561028b57600080fd5b506102a660048036036102a191908101906119c4565b610c7d565b6040516102b896959493929190611d32565b60405180910390f35b3480156102cd57600080fd5b506102d6610f78565b6040516102e39190611e2e565b60405180910390f35b600081610100015182600001518360200151846101e00151856060015186610240015187604001518861012001518961022001518a6102000151604051808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140186815260200185815260200184815260200183815260200182600019166000191681526020019a505050505050505050505060405180910390209050919050565b60008082610100015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104f657600091506105bd565b6104ff836102ec565b905060016000826000191660001916815260200190815260200160002060009054906101000a900460ff161561053857600091506105bd565b6001600080836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550806000191683610100015173ffffffffffffffffffffffffffffffffffffffff167f320c5376a3da7bddef2f74a91d4575f1a8547203712054ca2cf5f3ae3cadeb0560405160405180910390a3600191505b50919050565b6000806040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250846040518083805190602001908083835b602083101515610632578051825260208201915060208101905060208303925061060d565b6001836020036101000a038019825116818451168082178552505050505050905001826000191660001916815260200192505050604051809103902090508473ffffffffffffffffffffffffffffffffffffffff16600182856000015186602001518760400151604051600081526020016040526040516106b69493929190611dce565b60206040516020810390808403906000865af11580156106da573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16149150509392505050565b60006020528060005260406000206000915054906101000a900460ff1681565b6000806000806000610736866102ec565b93506107428685610c5e565b15156107b157836000191686610100015173ffffffffffffffffffffffffffffffffffffffff166002600381111561077657fe5b60ff167f9fd787e2a5fcbda76c8a1a1f8bb14a3328d4991b94bd7461fe7468aaedbd6d2460405160405180910390a460006001029450610c0f565b60016000856000191660001916815260200190815260200160002060009054906101000a900460ff161561084857836000191686610100015173ffffffffffffffffffffffffffffffffffffffff166001600381111561080d57fe5b60ff167f9fd787e2a5fcbda76c8a1a1f8bb14a3328d4991b94bd7461fe7468aaedbd6d2460405160405180910390a460006001029450610c0f565b600080856000191660001916815260200190815260200160002060009054906101000a900460ff16156108de57836000191686610100015173ffffffffffffffffffffffffffffffffffffffff16600060038111156108a357fe5b60ff167f9fd787e2a5fcbda76c8a1a1f8bb14a3328d4991b94bd7461fe7468aaedbd6d2460405160405180910390a460006001029450610c0f565b856060015192506109ad8330600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630eefdbad6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561097057600080fd5b505af1158015610984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109a8919081019061199b565b610f7e565b91506109cb866101200151876040015161103a90919063ffffffff16565b9050808210156109eb576109df8382611056565b15156109ea57600080fd5b5b6000811115610a1157610a058387610100015130846111c6565b1515610a1057600080fd5b5b610a1a8661127d565b9450600060010260001916856000191614151515610a3757600080fd5b6001806000866000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8d898986040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610af057600080fd5b505af1158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b289190810190611972565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87610100015187600190046040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b87929190611d09565b600060405180830381600087803b158015610ba157600080fd5b505af1158015610bb5573d6000803e3d6000fd5b505050508460001916846000191687610100015173ffffffffffffffffffffffffffffffffffffffff167fdc3cdf07a43996ceac82462ded070dbc1bf60c3d66cfa11770cd91a41b1c62e060405160405180910390a48494505b50505050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b6000610c75836101000151838561028001516105c3565b905092915050565b610c8561144d565b610c8d611470565b610c95611494565b610c9d6114b7565b610ca56114da565b610cad6114da565b60c060405190810160405280886000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018860c0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188610180015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886101e0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188610140015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525061010060405190810160405280896101c001518152602001896102400151815260200189604001518152602001896101a001518152602001896101600151815260200189610120015181526020018960e0015181526020018961022001518152506020604051908101604052808a610200015160001916600019168152506060604051908101604052808b61026001516000015160ff1660ff1681526020018b61028001516000015160ff1660ff1681526020018b6102a001516000015160ff1660ff168152506060604051908101604052808c610260015160200151600019166000191681526020018c610280015160200151600019166000191681526020018c6102a001516020015160001916600019168152506060604051908101604052808d610260015160400151600019166000191681526020018d610280015160400151600019166000191681526020018d6102a0015160400151600019166000191681525095509550955095509550955091939550919395565b611f4081565b60008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e611f4061ffff1685856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610fde929190611c35565b602060405180830381600088803b158015610ff857600080fd5b5087f115801561100c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506110319190810190611a2c565b90509392505050565b6000818301905082811015151561104d57fe5b80905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630eefdbad6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156110fa57600080fd5b505af115801561110e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611132919081019061199b565b846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161116c929190611d09565b602060405180830381600087803b15801561118657600080fd5b505af115801561119a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111be91908101906118ce565b905092915050565b60008473ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161122193929190611c5e565b602060405180830381600087803b15801561123b57600080fd5b505af115801561124f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061127391908101906118ce565b9050949350505050565b600061128761144d565b61128f611470565b611297611494565b61129f6114b7565b6112a76114da565b6112af6114da565b6112b888610c7d565b809650819750829850839950849a50859b50505050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663079dd4b76040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561135657600080fd5b505af115801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061138e9190810190611949565b73ffffffffffffffffffffffffffffffffffffffff1663e6488fc9308888888888886040518863ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016113ee9796959493929190611c95565b602060405180830381600087803b15801561140857600080fd5b505af115801561141c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114409190810190611920565b9650505050505050919050565b60c060405190810160405280600690602082028038833980820191505090505090565b61010060405190810160405280600890602082028038833980820191505090505090565b602060405190810160405280600190602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b60006115098235611f7b565b905092915050565b600061151d8251611f9b565b905092915050565b60006115318235611fa7565b905092915050565b60006115458251611fa7565b905092915050565b60006115598251611fb1565b905092915050565b600061156d8251611fc3565b905092915050565b60006115818251611fd5565b905092915050565b6000610380828403121561159c57600080fd5b6115a76102c0611e49565b905060006115b7848285016114fd565b60008301525060206115cb848285016114fd565b60208301525060406115df84828501611843565b60408301525060606115f3848285016114fd565b606083015250608061160784828501611843565b60808301525060a061161b848285016114fd565b60a08301525060c061162f848285016114fd565b60c08301525060e061164384828501611843565b60e083015250610100611658848285016114fd565b6101008301525061012061166e84828501611843565b61012083015250610140611684848285016114fd565b6101408301525061016061169a84828501611843565b610160830152506101806116b0848285016114fd565b610180830152506101a06116c684828501611843565b6101a0830152506101c06116dc84828501611843565b6101c0830152506101e06116f2848285016114fd565b6101e08301525061020061170884828501611525565b6102008301525061022061171e84828501611843565b6102208301525061024061173484828501611843565b6102408301525061026061174a84828501611783565b610260830152506102c061176084828501611783565b6102808301525061032061177684828501611783565b6102a08301525092915050565b60006060828403121561179557600080fd5b61179f6060611e49565b905060006117af8482850161186b565b60008301525060206117c384828501611525565b60208301525060406117d784828501611525565b60408301525092915050565b6000606082840312156117f557600080fd5b6117ff6060611e49565b9050600061180f8482850161186b565b600083015250602061182384828501611525565b602083015250604061183784828501611525565b60408301525092915050565b600061184f8235611fe7565b905092915050565b60006118638251611fe7565b905092915050565b60006118778235611ff1565b905092915050565b600080600060a0848603121561189457600080fd5b60006118a2868287016114fd565b93505060206118b386828701611525565b92505060406118c4868287016117e3565b9150509250925092565b6000602082840312156118e057600080fd5b60006118ee84828501611511565b91505092915050565b60006020828403121561190957600080fd5b600061191784828501611525565b91505092915050565b60006020828403121561193257600080fd5b600061194084828501611539565b91505092915050565b60006020828403121561195b57600080fd5b60006119698482850161154d565b91505092915050565b60006020828403121561198457600080fd5b600061199284828501611561565b91505092915050565b6000602082840312156119ad57600080fd5b60006119bb84828501611575565b91505092915050565b600061038082840312156119d757600080fd5b60006119e584828501611589565b91505092915050565b6000806103a08385031215611a0257600080fd5b6000611a1085828601611589565b925050610380611a2285828601611525565b9150509250929050565b600060208284031215611a3e57600080fd5b6000611a4c84828501611857565b91505092915050565b611a5e81611f20565b82525050565b611a6d81611ea8565b611a7682611e76565b60005b82811015611aa857611a8c858351611a55565b611a9582611edf565b9150602085019450600181019050611a79565b5050505050565b611ab881611eb3565b611ac182611e80565b60005b82811015611af357611ad7858351611bea565b611ae082611eec565b9150602085019450600181019050611ac4565b5050505050565b611b0381611ebe565b611b0c82611e8a565b60005b82811015611b3e57611b22858351611bea565b611b2b82611ef9565b9150602085019450600181019050611b0f565b5050505050565b611b4e81611ec9565b611b5782611e94565b60005b82811015611b8957611b6d858351611c17565b611b7682611f06565b9150602085019450600181019050611b5a565b5050505050565b611b9981611ed4565b611ba282611e9e565b60005b82811015611bd457611bb8858351611c26565b611bc182611f13565b9150602085019450600181019050611ba5565b5050505050565b611be481611f40565b82525050565b611bf381611f4c565b82525050565b611c0281611ffe565b82525050565b611c1181611f56565b82525050565b611c2081611f64565b82525050565b611c2f81611f6e565b82525050565b6000604082019050611c4a6000830185611a55565b611c576020830184611a55565b9392505050565b6000606082019050611c736000830186611a55565b611c806020830185611a55565b611c8d6040830184611c17565b949350505050565b600061032082019050611cab600083018a611a55565b611cb86020830189611a64565b611cc560e0830188611b45565b611cd36101e0830187611aaf565b611ce1610200830186611b90565b611cef610260830185611afa565b611cfd6102c0830184611afa565b98975050505050505050565b6000604082019050611d1e6000830185611a55565b611d2b6020830184611c17565b9392505050565b600061030082019050611d486000830189611a64565b611d5560c0830188611b45565b611d636101c0830187611aaf565b611d716101e0830186611b90565b611d7f610240830185611afa565b611d8d6102a0830184611afa565b979650505050505050565b6000602082019050611dad6000830184611bdb565b92915050565b6000602082019050611dc86000830184611bea565b92915050565b6000608082019050611de36000830187611bea565b611df06020830186611c26565b611dfd6040830185611bea565b611e0a6060830184611bea565b95945050505050565b6000602082019050611e286000830184611bf9565b92915050565b6000602082019050611e436000830184611c08565b92915050565b6000604051905081810181811067ffffffffffffffff82111715611e6c57600080fd5b8060405250919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600060069050919050565b600060019050919050565b600060039050919050565b600060089050919050565b600060039050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b600061ffff82169050919050565b6000819050919050565b600060ff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000611fbc82611f20565b9050919050565b6000611fce82611f20565b9050919050565b6000611fe082611f20565b9050919050565b6000819050919050565b600060ff82169050919050565b600061200982611f20565b90509190505600a265627a7a7230582034973f2b38e519c1eeb81bb315ed732becc3d765245e0dabf83af25c23d8e3506c6578706572696d656e74616cf50037",
  "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063072f262e146100a95780631ca54006146100e6578063578911ac14610123578063a318b5f714610160578063abc154801461019d578063abf410e5146101da578063c1614d0014610205578063d46b836d14610242578063e301885c1461027f578063f06bbf75146102c1575b600080fd5b3480156100b557600080fd5b506100d060048036036100cb91908101906119c4565b6102ec565b6040516100dd9190611db3565b60405180910390f35b3480156100f257600080fd5b5061010d600480360361010891908101906119c4565b6104b0565b60405161011a9190611d98565b60405180910390f35b34801561012f57600080fd5b5061014a6004803603610145919081019061187f565b6105c3565b6040516101579190611d98565b60405180910390f35b34801561016c57600080fd5b50610187600480360361018291908101906118f7565b610705565b6040516101949190611d98565b60405180910390f35b3480156101a957600080fd5b506101c460048036036101bf91908101906119c4565b610725565b6040516101d19190611db3565b60405180910390f35b3480156101e657600080fd5b506101ef610c18565b6040516101fc9190611e13565b60405180910390f35b34801561021157600080fd5b5061022c600480360361022791908101906118f7565b610c3e565b6040516102399190611d98565b60405180910390f35b34801561024e57600080fd5b50610269600480360361026491908101906119ee565b610c5e565b6040516102769190611d98565b60405180910390f35b34801561028b57600080fd5b506102a660048036036102a191908101906119c4565b610c7d565b6040516102b896959493929190611d32565b60405180910390f35b3480156102cd57600080fd5b506102d6610f78565b6040516102e39190611e2e565b60405180910390f35b600081610100015182600001518360200151846101e00151856060015186610240015187604001518861012001518961022001518a6102000151604051808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140186815260200185815260200184815260200183815260200182600019166000191681526020019a505050505050505050505060405180910390209050919050565b60008082610100015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104f657600091506105bd565b6104ff836102ec565b905060016000826000191660001916815260200190815260200160002060009054906101000a900460ff161561053857600091506105bd565b6001600080836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550806000191683610100015173ffffffffffffffffffffffffffffffffffffffff167f320c5376a3da7bddef2f74a91d4575f1a8547203712054ca2cf5f3ae3cadeb0560405160405180910390a3600191505b50919050565b6000806040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250846040518083805190602001908083835b602083101515610632578051825260208201915060208101905060208303925061060d565b6001836020036101000a038019825116818451168082178552505050505050905001826000191660001916815260200192505050604051809103902090508473ffffffffffffffffffffffffffffffffffffffff16600182856000015186602001518760400151604051600081526020016040526040516106b69493929190611dce565b60206040516020810390808403906000865af11580156106da573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16149150509392505050565b60006020528060005260406000206000915054906101000a900460ff1681565b6000806000806000610736866102ec565b93506107428685610c5e565b15156107b157836000191686610100015173ffffffffffffffffffffffffffffffffffffffff166002600381111561077657fe5b60ff167f9fd787e2a5fcbda76c8a1a1f8bb14a3328d4991b94bd7461fe7468aaedbd6d2460405160405180910390a460006001029450610c0f565b60016000856000191660001916815260200190815260200160002060009054906101000a900460ff161561084857836000191686610100015173ffffffffffffffffffffffffffffffffffffffff166001600381111561080d57fe5b60ff167f9fd787e2a5fcbda76c8a1a1f8bb14a3328d4991b94bd7461fe7468aaedbd6d2460405160405180910390a460006001029450610c0f565b600080856000191660001916815260200190815260200160002060009054906101000a900460ff16156108de57836000191686610100015173ffffffffffffffffffffffffffffffffffffffff16600060038111156108a357fe5b60ff167f9fd787e2a5fcbda76c8a1a1f8bb14a3328d4991b94bd7461fe7468aaedbd6d2460405160405180910390a460006001029450610c0f565b856060015192506109ad8330600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630eefdbad6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561097057600080fd5b505af1158015610984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109a8919081019061199b565b610f7e565b91506109cb866101200151876040015161103a90919063ffffffff16565b9050808210156109eb576109df8382611056565b15156109ea57600080fd5b5b6000811115610a1157610a058387610100015130846111c6565b1515610a1057600080fd5b5b610a1a8661127d565b9450600060010260001916856000191614151515610a3757600080fd5b6001806000866000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8d898986040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610af057600080fd5b505af1158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b289190810190611972565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87610100015187600190046040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b87929190611d09565b600060405180830381600087803b158015610ba157600080fd5b505af1158015610bb5573d6000803e3d6000fd5b505050508460001916846000191687610100015173ffffffffffffffffffffffffffffffffffffffff167fdc3cdf07a43996ceac82462ded070dbc1bf60c3d66cfa11770cd91a41b1c62e060405160405180910390a48494505b50505050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b6000610c75836101000151838561028001516105c3565b905092915050565b610c8561144d565b610c8d611470565b610c95611494565b610c9d6114b7565b610ca56114da565b610cad6114da565b60c060405190810160405280886000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018860c0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188610180015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886101e0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188610140015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525061010060405190810160405280896101c001518152602001896102400151815260200189604001518152602001896101a001518152602001896101600151815260200189610120015181526020018960e0015181526020018961022001518152506020604051908101604052808a610200015160001916600019168152506060604051908101604052808b61026001516000015160ff1660ff1681526020018b61028001516000015160ff1660ff1681526020018b6102a001516000015160ff1660ff168152506060604051908101604052808c610260015160200151600019166000191681526020018c610280015160200151600019166000191681526020018c6102a001516020015160001916600019168152506060604051908101604052808d610260015160400151600019166000191681526020018d610280015160400151600019166000191681526020018d6102a0015160400151600019166000191681525095509550955095509550955091939550919395565b611f4081565b60008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e611f4061ffff1685856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610fde929190611c35565b602060405180830381600088803b158015610ff857600080fd5b5087f115801561100c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506110319190810190611a2c565b90509392505050565b6000818301905082811015151561104d57fe5b80905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630eefdbad6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156110fa57600080fd5b505af115801561110e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611132919081019061199b565b846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161116c929190611d09565b602060405180830381600087803b15801561118657600080fd5b505af115801561119a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111be91908101906118ce565b905092915050565b60008473ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161122193929190611c5e565b602060405180830381600087803b15801561123b57600080fd5b505af115801561124f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061127391908101906118ce565b9050949350505050565b600061128761144d565b61128f611470565b611297611494565b61129f6114b7565b6112a76114da565b6112af6114da565b6112b888610c7d565b809650819750829850839950849a50859b50505050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663079dd4b76040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561135657600080fd5b505af115801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061138e9190810190611949565b73ffffffffffffffffffffffffffffffffffffffff1663e6488fc9308888888888886040518863ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016113ee9796959493929190611c95565b602060405180830381600087803b15801561140857600080fd5b505af115801561141c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114409190810190611920565b9650505050505050919050565b60c060405190810160405280600690602082028038833980820191505090505090565b61010060405190810160405280600890602082028038833980820191505090505090565b602060405190810160405280600190602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b60006115098235611f7b565b905092915050565b600061151d8251611f9b565b905092915050565b60006115318235611fa7565b905092915050565b60006115458251611fa7565b905092915050565b60006115598251611fb1565b905092915050565b600061156d8251611fc3565b905092915050565b60006115818251611fd5565b905092915050565b6000610380828403121561159c57600080fd5b6115a76102c0611e49565b905060006115b7848285016114fd565b60008301525060206115cb848285016114fd565b60208301525060406115df84828501611843565b60408301525060606115f3848285016114fd565b606083015250608061160784828501611843565b60808301525060a061161b848285016114fd565b60a08301525060c061162f848285016114fd565b60c08301525060e061164384828501611843565b60e083015250610100611658848285016114fd565b6101008301525061012061166e84828501611843565b61012083015250610140611684848285016114fd565b6101408301525061016061169a84828501611843565b610160830152506101806116b0848285016114fd565b610180830152506101a06116c684828501611843565b6101a0830152506101c06116dc84828501611843565b6101c0830152506101e06116f2848285016114fd565b6101e08301525061020061170884828501611525565b6102008301525061022061171e84828501611843565b6102208301525061024061173484828501611843565b6102408301525061026061174a84828501611783565b610260830152506102c061176084828501611783565b6102808301525061032061177684828501611783565b6102a08301525092915050565b60006060828403121561179557600080fd5b61179f6060611e49565b905060006117af8482850161186b565b60008301525060206117c384828501611525565b60208301525060406117d784828501611525565b60408301525092915050565b6000606082840312156117f557600080fd5b6117ff6060611e49565b9050600061180f8482850161186b565b600083015250602061182384828501611525565b602083015250604061183784828501611525565b60408301525092915050565b600061184f8235611fe7565b905092915050565b60006118638251611fe7565b905092915050565b60006118778235611ff1565b905092915050565b600080600060a0848603121561189457600080fd5b60006118a2868287016114fd565b93505060206118b386828701611525565b92505060406118c4868287016117e3565b9150509250925092565b6000602082840312156118e057600080fd5b60006118ee84828501611511565b91505092915050565b60006020828403121561190957600080fd5b600061191784828501611525565b91505092915050565b60006020828403121561193257600080fd5b600061194084828501611539565b91505092915050565b60006020828403121561195b57600080fd5b60006119698482850161154d565b91505092915050565b60006020828403121561198457600080fd5b600061199284828501611561565b91505092915050565b6000602082840312156119ad57600080fd5b60006119bb84828501611575565b91505092915050565b600061038082840312156119d757600080fd5b60006119e584828501611589565b91505092915050565b6000806103a08385031215611a0257600080fd5b6000611a1085828601611589565b925050610380611a2285828601611525565b9150509250929050565b600060208284031215611a3e57600080fd5b6000611a4c84828501611857565b91505092915050565b611a5e81611f20565b82525050565b611a6d81611ea8565b611a7682611e76565b60005b82811015611aa857611a8c858351611a55565b611a9582611edf565b9150602085019450600181019050611a79565b5050505050565b611ab881611eb3565b611ac182611e80565b60005b82811015611af357611ad7858351611bea565b611ae082611eec565b9150602085019450600181019050611ac4565b5050505050565b611b0381611ebe565b611b0c82611e8a565b60005b82811015611b3e57611b22858351611bea565b611b2b82611ef9565b9150602085019450600181019050611b0f565b5050505050565b611b4e81611ec9565b611b5782611e94565b60005b82811015611b8957611b6d858351611c17565b611b7682611f06565b9150602085019450600181019050611b5a565b5050505050565b611b9981611ed4565b611ba282611e9e565b60005b82811015611bd457611bb8858351611c26565b611bc182611f13565b9150602085019450600181019050611ba5565b5050505050565b611be481611f40565b82525050565b611bf381611f4c565b82525050565b611c0281611ffe565b82525050565b611c1181611f56565b82525050565b611c2081611f64565b82525050565b611c2f81611f6e565b82525050565b6000604082019050611c4a6000830185611a55565b611c576020830184611a55565b9392505050565b6000606082019050611c736000830186611a55565b611c806020830185611a55565b611c8d6040830184611c17565b949350505050565b600061032082019050611cab600083018a611a55565b611cb86020830189611a64565b611cc560e0830188611b45565b611cd36101e0830187611aaf565b611ce1610200830186611b90565b611cef610260830185611afa565b611cfd6102c0830184611afa565b98975050505050505050565b6000604082019050611d1e6000830185611a55565b611d2b6020830184611c17565b9392505050565b600061030082019050611d486000830189611a64565b611d5560c0830188611b45565b611d636101c0830187611aaf565b611d716101e0830186611b90565b611d7f610240830185611afa565b611d8d6102a0830184611afa565b979650505050505050565b6000602082019050611dad6000830184611bdb565b92915050565b6000602082019050611dc86000830184611bea565b92915050565b6000608082019050611de36000830187611bea565b611df06020830186611c26565b611dfd6040830185611bea565b611e0a6060830184611bea565b95945050505050565b6000602082019050611e286000830184611bf9565b92915050565b6000602082019050611e436000830184611c08565b92915050565b6000604051905081810181811067ffffffffffffffff82111715611e6c57600080fd5b8060405250919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600060069050919050565b600060019050919050565b600060039050919050565b600060089050919050565b600060039050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b600061ffff82169050919050565b6000819050919050565b600060ff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000611fbc82611f20565b9050919050565b6000611fce82611f20565b9050919050565b6000611fe082611f20565b9050919050565b6000819050919050565b600060ff82169050919050565b600061200982611f20565b90509190505600a265627a7a7230582034973f2b38e519c1eeb81bb315ed732becc3d765245e0dabf83af25c23d8e3506c6578706572696d656e74616cf50037",
  "sourceMap": "393:5250:4:-;;;801:142;8:9:-1;5:2;;;30:1;27;20:12;5:2;801:142:4;;;;;;;;;;;;;;;;;;;;;;918:17;873:16;;:63;;;;;;;;;;;;;;;;;;801:142;393:5250;;5:122:-1;;83:39;114:6;108:13;83:39;;;74:48;;68:59;;;;;134:263;;249:2;237:9;228:7;224:23;220:32;217:2;;;265:1;262;255:12;217:2;300:1;317:64;373:7;364:6;353:9;349:22;317:64;;;307:74;;279:108;211:186;;;;;404:128;;484:42;477:5;473:54;462:65;;456:76;;;;393:5250:4;;;;;;;",
  "deployedSourceMap": "393:5250:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;446:746:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;446:746:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4690:591:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4690:591:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;228:268:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;228:268:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;508:51:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:51:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;949:2194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;949:2194:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;745:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;745:49:4;;;;;;;;;;;;;;;;;;;;565:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;565:48:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;235:208:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;235:208:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;757:906:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;757:906:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;684:54:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;684:54:4;;;;;;;;;;;;;;;;;;;;446:746:1;555:31;632:5;:14;;;672:5;:19;;;728:5;:21;;;791:5;:19;;;850:5;:20;;;911:5;:10;;;943:5;:21;;;998:5;:17;;;1045:5;:30;;;1117:5;:29;;;609:576;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;602:583;;446:746;;;:::o;4690:591:4:-;4755:14;4906:30;4843:5;:14;;;4829:28;;:10;:28;;;;4825:71;;;4880:5;4873:12;;;;4825:71;4939:37;4970:5;4939:30;:37::i;:::-;4906:70;;5041:15;:39;5057:22;5041:39;;;;;;;;;;;;;;;;;;;;;;;;;;;5037:82;;;5103:5;5096:12;;;;5037:82;5174:4;5129:18;:42;5148:22;5129:42;;;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;5229:22;5194:58;;;5213:5;:14;;;5194:58;;;;;;;;;;;;5270:4;5263:11;;4690:591;;;;;:::o;228:268:16:-;346:10;363:20;396:6;;;;;;;;;;;;;;;;;;404:4;386:23;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;386:23:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;363:46;;486:6;420:72;;:62;430:12;444:9;:11;;;457:9;:11;;;470:9;:11;;;420:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;420:62:16;;;;;;;;:72;;;413:79;;228:268;;;;;;:::o;508:51:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;949:2194::-;1012:19;1043:30;1799:22;1942:27;2111:25;1076:37;1107:5;1076:30;:37::i;:::-;1043:70;;1129:46;1145:5;1152:22;1129:15;:46::i;:::-;1128:47;1124:221;;;1272:22;1196:99;;;1256:5;:14;;;1196:99;;1221:32;1215:39;;;;;;;;1196:99;;;;;;;;;;;;675:1;667:10;;1309:25;;;;1124:221;1359:15;:39;1375:22;1359:39;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:213;;;1495:22;1419:99;;;1479:5;:14;;;1419:99;;1444:32;1438:39;;;;;;;;1419:99;;;;;;;;;;;;675:1;667:10;;1532:25;;;;1355:213;1582:18;:42;1601:22;1582:42;;;;;;;;;;;;;;;;;;;;;;;;;;;1578:211;;;1716:22;1645:94;;;1700:5;:14;;;1645:94;;1670:27;1664:34;;;;;;;;1645:94;;;;;;;;;;;;675:1;667:10;;1753:25;;;;1578:211;1824:5;:20;;;1799:45;;1972:128;1998:14;2034:4;2053:16;;;;;;;;;;;:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2053:37:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2053:37:4;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2053:37:4;;;;;;;;;1972:12;:128::i;:::-;1942:158;;2139:44;2165:5;:17;;;2139:5;:21;;;:25;;:44;;;;:::i;:::-;2111:72;;2310:20;2285:22;:45;2281:148;;;2354:63;2380:14;2396:20;2354:25;:63::i;:::-;2346:72;;;;;;;;2281:148;2527:1;2504:20;:24;2500:279;;;2569:185;2609:14;2645:5;:14;;;2689:4;2716:20;2569:18;:185::i;:::-;2544:224;;;;;;;;2500:279;2803:24;2821:5;2803:17;:24::i;:::-;2789:38;;675:1;667:10;;2846:33;;;:11;:33;;;;;2838:42;;;;;;;;2933:4;2891:15;:39;2907:22;2891:39;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2948:16;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2948:28:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2948:28:4;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2948:28:4;;;;;;;;;:37;;;2986:5;:14;;;3010:11;3002:20;;;2948:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2948:75:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2948:75:4;;;;3095:11;3039:68;;;3071:22;3039:68;;;3055:5;:14;;;3039:68;;;;;;;;;;;;3125:11;3118:18;;949:2194;;;;;;;;:::o;745:49::-;;;;;;;;;;;;;:::o;565:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;235:208:1:-;335:4;353:86;374:5;:14;;;393;412:5;:23;;;353:16;:86::i;:::-;346:93;;235:208;;;;:::o;757:906:15:-;843:25;;:::i;:::-;879:19;;:::i;:::-;909:23;;:::i;:::-;943:20;;:::i;:::-;974:22;;:::i;:::-;1007;;:::i;:::-;1039:620;;;;;;;;;1052:5;:19;;;1039:620;;;;;;;;1073:5;:12;;;1039:620;;;;;;;;1087:5;:17;;;1039:620;;;;;;;;1106:5;:19;;;1039:620;;;;;;;;1127:5;:20;;;1039:620;;;;;;;;1149:5;:13;;;1039:620;;;;;;;;;;;;;;;;1178:5;:27;;;1039:620;;;;1207:5;:10;;;1039:620;;;;1219:5;:21;;;1039:620;;;;1242:5;:20;;;1039:620;;;;1264:5;:16;;;1039:620;;;;1282:5;:17;;;1039:620;;;;1301:5;:15;;;1039:620;;;;1318:5;:30;;;1039:620;;;;;;;;;;;;1355:5;:29;;;1039:620;;;;;;;;;;;;;;;;;;1400:5;:21;;;:23;;;1039:620;;;;;;;;1425:5;:23;;;:25;;;1039:620;;;;;;;;1452:5;:26;;;:28;;;1039:620;;;;;;;;;;;;;;;;1487:5;:21;;;:23;;;1039:620;;;;;;;;;;1512:5;:23;;;:25;;;1039:620;;;;;;;;;;1539:5;:26;;;:28;;;1039:620;;;;;;;;;;;;;;;;;;1574:5;:21;;;:23;;;1039:620;;;;;;;;;;1599:5;:23;;;:25;;;1039:620;;;;;;;;;;1626:5;:26;;;:28;;;1039:620;;;;;;;;;;;;;;;;;;;;;757:906;;;;;;;:::o;684:54:4:-;734:4;684:54;:::o;4347:337::-;4493:15;4581:5;4575:22;;;734:4;4575:52;;4641:5;4660:7;4575:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4575:102:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4575:102:4;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4575:102:4;;;;;;;;;4568:109;;4347:337;;;;;:::o;1238:128:17:-;1298:9;1324:2;1319;:7;1315:11;;1344:2;1339:1;:7;;1332:15;;;;;;1360:1;1353:8;;1238:128;;;;:::o;3957:272:4:-;4076:13;4118:5;4112:20;;;4154:16;;;;;;;;;;;:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4154:37:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4154:37:4;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4154:37:4;;;;;;;;;4206:6;4112:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4112:110:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4112:110:4;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4112:110:4;;;;;;;;;4105:117;;3957:272;;;;:::o;5393:248::-;5551:13;5593:6;5587:26;;;5614:5;5621:3;5626:7;5587:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5587:47:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5587:47:4;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5587:47:4;;;;;;;;;5580:54;;5393:248;;;;;;:::o;3149:691::-;3218:10;3240:32;;:::i;:::-;3282:26;;:::i;:::-;3318:30;;:::i;:::-;3358:27;;:::i;:::-;3395:29;;:::i;:::-;3434;;:::i;:::-;3559:22;3575:5;3559:15;:22::i;:::-;3474:107;;;;;;;;;;;;;;;;;;;;;;;;3599:16;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3599:29:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3599:29:4;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3599:29:4;;;;;;;;;:43;;;3664:4;3683:14;3711:11;3736:12;3762:11;3787;3812;3599:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3599:234:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3599:234:4;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3599:234:4;;;;;;;;;3592:241;;3149:691;;;;;;;;;:::o;393:5250::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;393:5250:4;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;393:5250:4;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;393:5250:4;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;393:5250:4;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;393:5250:4;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;;57:66;;;;;130:116;;205:36;233:6;227:13;205:36;;;196:45;;190:56;;;;;253:118;;320:46;358:6;345:20;320:46;;;311:55;;305:66;;;;;378:122;;456:39;487:6;481:13;456:39;;;447:48;;441:59;;;;;507:178;;613:67;672:6;666:13;613:67;;;604:76;;598:87;;;;;692:176;;797:66;855:6;849:13;797:66;;;788:75;;782:86;;;;;875:194;;989:75;1056:6;1050:13;989:75;;;980:84;;974:95;;;;;1112:3679;;1228:5;1216:9;1211:3;1207:19;1203:31;1200:2;;;1247:1;1244;1237:12;1200:2;1265:21;1280:5;1265:21;;;1256:30;;1345:1;1376:49;1421:3;1412:6;1401:9;1397:22;1376:49;;;1370:3;1363:5;1359:15;1352:74;1296:141;1498:2;1531:49;1576:3;1567:6;1556:9;1552:22;1531:49;;;1524:4;1517:5;1513:16;1506:75;1447:145;1653:2;1686:49;1731:3;1722:6;1711:9;1707:22;1686:49;;;1679:4;1672:5;1668:16;1661:75;1602:145;1807:2;1840:49;1885:3;1876:6;1865:9;1861:22;1840:49;;;1833:4;1826:5;1822:16;1815:75;1757:144;1963:3;1997:49;2042:3;2033:6;2022:9;2018:22;1997:49;;;1990:4;1983:5;1979:16;1972:75;1911:147;2119:3;2153:49;2198:3;2189:6;2178:9;2174:22;2153:49;;;2146:4;2139:5;2135:16;2128:75;2068:146;2266:3;2300:49;2345:3;2336:6;2325:9;2321:22;2300:49;;;2293:4;2286:5;2282:16;2275:75;2224:137;2416:3;2450:49;2495:3;2486:6;2475:9;2471:22;2450:49;;;2443:4;2436:5;2432:16;2425:75;2371:140;2565:3;2600:49;2645:3;2636:6;2625:9;2621:22;2600:49;;;2592:5;2585;2581:17;2574:76;2521:140;2718:3;2753:49;2798:3;2789:6;2778:9;2774:22;2753:49;;;2745:5;2738;2734:17;2727:76;2671:143;2867:3;2902:49;2947:3;2938:6;2927:9;2923:22;2902:49;;;2894:5;2887;2883:17;2876:76;2824:139;3019:3;3054:49;3099:3;3090:6;3079:9;3075:22;3054:49;;;3046:5;3039;3035:17;3028:76;2973:142;3172:3;3207:49;3252:3;3243:6;3232:9;3228:22;3207:49;;;3199:5;3192;3188:17;3181:76;3125:143;3328:3;3363:49;3408:3;3399:6;3388:9;3384:22;3363:49;;;3355:5;3348;3344:17;3337:76;3278:146;3491:3;3526:49;3571:3;3562:6;3551:9;3547:22;3526:49;;;3518:5;3511;3507:17;3500:76;3434:153;3646:3;3681:49;3726:3;3717:6;3706:9;3702:22;3681:49;;;3673:5;3666;3662:17;3655:76;3597:145;3811:3;3846:49;3891:3;3882:6;3871:9;3867:22;3846:49;;;3838:5;3831;3827:17;3820:76;3752:155;3977:3;4012:49;4057:3;4048:6;4037:9;4033:22;4012:49;;;4004:5;3997;3993:17;3986:76;3917:156;4123:3;4158:49;4203:3;4194:6;4183:9;4179:22;4158:49;;;4150:5;4143;4139:17;4132:76;4083:136;4280:3;4315:77;4388:3;4379:6;4368:9;4364:22;4315:77;;;4307:5;4300;4296:17;4289:104;4229:175;4467:3;4502:77;4575:3;4566:6;4555:9;4551:22;4502:77;;;4494:5;4487;4483:17;4476:104;4414:177;4657:3;4692:77;4765:3;4756:6;4745:9;4741:22;4692:77;;;4684:5;4677;4673:17;4666:104;4601:180;1194:3597;;;;;4844:602;;4961:4;4949:9;4944:3;4940:19;4936:30;4933:2;;;4979:1;4976;4969:12;4933:2;4997:20;5012:4;4997:20;;;4988:29;;5064:1;5095:47;5138:3;5129:6;5118:9;5114:22;5095:47;;;5089:3;5082:5;5078:15;5071:72;5027:127;5201:2;5234:49;5279:3;5270:6;5259:9;5255:22;5234:49;;;5227:4;5220:5;5216:16;5209:75;5164:131;5342:2;5375:49;5420:3;5411:6;5400:9;5396:22;5375:49;;;5368:4;5361:5;5357:16;5350:75;5305:131;4927:519;;;;;5499:606;;5620:4;5608:9;5603:3;5599:19;5595:30;5592:2;;;5638:1;5635;5628:12;5592:2;5656:20;5671:4;5656:20;;;5647:29;;5723:1;5754:47;5797:3;5788:6;5777:9;5773:22;5754:47;;;5748:3;5741:5;5737:15;5730:72;5686:127;5860:2;5893:49;5938:3;5929:6;5918:9;5914:22;5893:49;;;5886:4;5879:5;5875:16;5868:75;5823:131;6001:2;6034:49;6079:3;6070:6;6059:9;6055:22;6034:49;;;6027:4;6020:5;6016:16;6009:75;5964:131;5586:519;;;;;6112:118;;6179:46;6217:6;6204:20;6179:46;;;6170:55;;6164:66;;;;;6237:122;;6315:39;6346:6;6340:13;6315:39;;;6306:48;;6300:59;;;;;6366:114;;6431:44;6467:6;6454:20;6431:44;;;6422:53;;6416:64;;;;;6487:556;;;;6657:3;6645:9;6636:7;6632:23;6628:33;6625:2;;;6674:1;6671;6664:12;6625:2;6709:1;6726:53;6771:7;6762:6;6751:9;6747:22;6726:53;;;6716:63;;6688:97;6816:2;6834:53;6879:7;6870:6;6859:9;6855:22;6834:53;;;6824:63;;6795:98;6924:2;6942:85;7019:7;7010:6;6999:9;6995:22;6942:85;;;6932:95;;6903:130;6619:424;;;;;;7050:257;;7162:2;7150:9;7141:7;7137:23;7133:32;7130:2;;;7178:1;7175;7168:12;7130:2;7213:1;7230:61;7283:7;7274:6;7263:9;7259:22;7230:61;;;7220:71;;7192:105;7124:183;;;;;7314:241;;7418:2;7406:9;7397:7;7393:23;7389:32;7386:2;;;7434:1;7431;7424:12;7386:2;7469:1;7486:53;7531:7;7522:6;7511:9;7507:22;7486:53;;;7476:63;;7448:97;7380:175;;;;;7562:263;;7677:2;7665:9;7656:7;7652:23;7648:32;7645:2;;;7693:1;7690;7683:12;7645:2;7728:1;7745:64;7801:7;7792:6;7781:9;7777:22;7745:64;;;7735:74;;7707:108;7639:186;;;;;7832:319;;7975:2;7963:9;7954:7;7950:23;7946:32;7943:2;;;7991:1;7988;7981:12;7943:2;8026:1;8043:92;8127:7;8118:6;8107:9;8103:22;8043:92;;;8033:102;;8005:136;7937:214;;;;;8158:317;;8300:2;8288:9;8279:7;8275:23;8271:32;8268:2;;;8316:1;8313;8306:12;8268:2;8351:1;8368:91;8451:7;8442:6;8431:9;8427:22;8368:91;;;8358:101;;8330:135;8262:213;;;;;8482:335;;8633:2;8621:9;8612:7;8608:23;8604:32;8601:2;;;8649:1;8646;8639:12;8601:2;8684:1;8701:100;8793:7;8784:6;8773:9;8769:22;8701:100;;;8691:110;;8663:144;8595:222;;;;;8824:296;;8955:3;8943:9;8934:7;8930:23;8926:33;8923:2;;;8972:1;8969;8962:12;8923:2;9007:1;9024:80;9096:7;9087:6;9076:9;9072:22;9024:80;;;9014:90;;8986:124;8917:203;;;;;9127:422;;;9275:3;9263:9;9254:7;9250:23;9246:33;9243:2;;;9292:1;9289;9282:12;9243:2;9327:1;9344:80;9416:7;9407:6;9396:9;9392:22;9344:80;;;9334:90;;9306:124;9461:3;9480:53;9525:7;9516:6;9505:9;9501:22;9480:53;;;9470:63;;9440:99;9237:312;;;;;;9556:263;;9671:2;9659:9;9650:7;9646:23;9642:32;9639:2;;;9687:1;9684;9677:12;9639:2;9722:1;9739:64;9795:7;9786:6;9775:9;9771:22;9739:64;;;9729:74;;9701:108;9633:186;;;;;9826:110;9899:31;9924:5;9899:31;;;9894:3;9887:44;9881:55;;;9976:521;10099:52;10145:5;10099:52;;;10197:54;10245:5;10197:54;;;10272:1;10257:228;10282:6;10279:1;10276:13;10257:228;;;10322:53;10371:3;10362:6;10356:13;10322:53;;;10392:58;10443:6;10392:58;;;10382:68;;10473:4;10468:3;10464:14;10457:21;;10304:1;10301;10297:9;10292:14;;10257:228;;;10261:14;10078:419;;;;;10538:521;10661:52;10707:5;10661:52;;;10759:54;10807:5;10759:54;;;10834:1;10819:228;10844:6;10841:1;10838:13;10819:228;;;10884:53;10933:3;10924:6;10918:13;10884:53;;;10954:58;11005:6;10954:58;;;10944:68;;11035:4;11030:3;11026:14;11019:21;;10866:1;10863;10859:9;10854:14;;10819:228;;;10823:14;10640:419;;;;;11100:521;11223:52;11269:5;11223:52;;;11321:54;11369:5;11321:54;;;11396:1;11381:228;11406:6;11403:1;11400:13;11381:228;;;11446:53;11495:3;11486:6;11480:13;11446:53;;;11516:58;11567:6;11516:58;;;11506:68;;11597:4;11592:3;11588:14;11581:21;;11428:1;11425;11421:9;11416:14;;11381:228;;;11385:14;11202:419;;;;;11662:521;11785:52;11831:5;11785:52;;;11883:54;11931:5;11883:54;;;11958:1;11943:228;11968:6;11965:1;11962:13;11943:228;;;12008:53;12057:3;12048:6;12042:13;12008:53;;;12078:58;12129:6;12078:58;;;12068:68;;12159:4;12154:3;12150:14;12143:21;;11990:1;11987;11983:9;11978:14;;11943:228;;;11947:14;11764:419;;;;;12220:507;12339:50;12383:5;12339:50;;;12435:52;12481:5;12435:52;;;12508:1;12493:222;12518:6;12515:1;12512:13;12493:222;;;12558:49;12603:3;12594:6;12588:13;12558:49;;;12624:56;12673:6;12624:56;;;12614:66;;12703:4;12698:3;12694:14;12687:21;;12540:1;12537;12533:9;12528:14;;12493:222;;;12497:14;12318:409;;;;;12735:101;12802:28;12824:5;12802:28;;;12797:3;12790:41;12784:52;;;12843:110;12916:31;12941:5;12916:31;;;12911:3;12904:44;12898:55;;;12960:184;13067:71;13132:5;13067:71;;;13062:3;13055:84;13049:95;;;13151:107;13222:30;13246:5;13222:30;;;13217:3;13210:43;13204:54;;;13265:110;13338:31;13363:5;13338:31;;;13333:3;13326:44;13320:55;;;13382:104;13451:29;13474:5;13451:29;;;13446:3;13439:42;13433:53;;;13493:294;;13629:2;13618:9;13614:18;13606:26;;13643:61;13701:1;13690:9;13686:17;13677:6;13643:61;;;13715:62;13773:2;13762:9;13758:18;13749:6;13715:62;;;13600:187;;;;;;13794:395;;13958:2;13947:9;13943:18;13935:26;;13972:61;14030:1;14019:9;14015:17;14006:6;13972:61;;;14044:62;14102:2;14091:9;14087:18;14078:6;14044:62;;;14117;14175:2;14164:9;14160:18;14151:6;14117:62;;;13929:260;;;;;;;14196:1349;;14744:3;14733:9;14729:19;14721:27;;14759:61;14817:1;14806:9;14802:17;14793:6;14759:61;;;14831:108;14935:2;14924:9;14920:18;14911:6;14831:108;;;14950:109;15054:3;15043:9;15039:19;15030:6;14950:109;;;15070;15174:3;15163:9;15159:19;15150:6;15070:109;;;15190:105;15290:3;15279:9;15275:19;15266:6;15190:105;;;15306:109;15410:3;15399:9;15395:19;15386:6;15306:109;;;15426;15530:3;15519:9;15515:19;15506:6;15426:109;;;14715:830;;;;;;;;;;;15552:294;;15688:2;15677:9;15673:18;15665:26;;15702:61;15760:1;15749:9;15745:17;15736:6;15702:61;;;15774:62;15832:2;15821:9;15817:18;15808:6;15774:62;;;15659:187;;;;;;15853:1248;;16373:3;16362:9;16358:19;16350:27;;16388:107;16492:1;16481:9;16477:17;16468:6;16388:107;;;16506:109;16610:3;16599:9;16595:19;16586:6;16506:109;;;16626;16730:3;16719:9;16715:19;16706:6;16626:109;;;16746:105;16846:3;16835:9;16831:19;16822:6;16746:105;;;16862:109;16966:3;16955:9;16951:19;16942:6;16862:109;;;16982;17086:3;17075:9;17071:19;17062:6;16982:109;;;16344:757;;;;;;;;;;17108:181;;17210:2;17199:9;17195:18;17187:26;;17224:55;17276:1;17265:9;17261:17;17252:6;17224:55;;;17181:108;;;;;17296:193;;17404:2;17393:9;17389:18;17381:26;;17418:61;17476:1;17465:9;17461:17;17452:6;17418:61;;;17375:114;;;;;17496:489;;17684:3;17673:9;17669:19;17661:27;;17699:61;17757:1;17746:9;17742:17;17733:6;17699:61;;;17771:58;17825:2;17814:9;17810:18;17801:6;17771:58;;;17840:62;17898:2;17887:9;17883:18;17874:6;17840:62;;;17913;17971:2;17960:9;17956:18;17947:6;17913:62;;;17655:330;;;;;;;;17992:261;;18134:2;18123:9;18119:18;18111:26;;18148:95;18240:1;18229:9;18225:17;18216:6;18148:95;;;18105:148;;;;;18260:189;;18366:2;18355:9;18351:18;18343:26;;18380:59;18436:1;18425:9;18421:17;18412:6;18380:59;;;18337:112;;;;;18456:256;;18518:2;18512:9;18502:19;;18556:4;18548:6;18544:17;18655:6;18643:10;18640:22;18619:18;18607:10;18604:34;18601:62;18598:2;;;18676:1;18673;18666:12;18598:2;18696:10;18692:2;18685:22;18496:216;;;;;18721:108;;18816:6;18805:17;;18797:32;;;;18840:108;;18935:6;18924:17;;18916:32;;;;18959:108;;19054:6;19043:17;;19035:32;;;;19078:108;;19173:6;19162:17;;19154:32;;;;19197:106;;19290:6;19279:17;;19271:32;;;;19312:96;;19400:3;19390:13;;19384:24;;;;19415:96;;19503:3;19493:13;;19487:24;;;;19518:96;;19606:3;19596:13;;19590:24;;;;19621:96;;19709:3;19699:13;;19693:24;;;;19724:94;;19810:3;19800:13;;19794:24;;;;19826:120;;19935:4;19927:6;19923:17;19912:28;;19905:41;;;;19955:120;;20064:4;20056:6;20052:17;20041:28;;20034:41;;;;20084:120;;20193:4;20185:6;20181:17;20170:28;;20163:41;;;;20213:120;;20322:4;20314:6;20310:17;20299:28;;20292:41;;;;20342:118;;20449:4;20441:6;20437:17;20426:28;;20419:41;;;;20468:128;;20548:42;20541:5;20537:54;20526:65;;20520:76;;;;20603:92;;20683:5;20676:13;20669:21;20658:32;;20652:43;;;;20702:79;;20771:5;20760:16;;20754:27;;;;20788:91;;20867:6;20860:5;20856:18;20845:29;;20839:40;;;;20886:79;;20955:5;20944:16;;20938:27;;;;20972:88;;21050:4;21043:5;21039:16;21028:27;;21022:38;;;;21067:128;;21147:42;21140:5;21136:54;21125:65;;21119:76;;;;21202:92;;21282:5;21275:13;21268:21;21257:32;;21251:43;;;;21301:79;;21370:5;21359:16;;21353:27;;;;21387:133;;21484:31;21509:5;21484:31;;;21473:42;;21467:53;;;;21527:132;;21623:31;21648:5;21623:31;;;21612:42;;21606:53;;;;21666:141;;21771:31;21796:5;21771:31;;;21760:42;;21754:53;;;;21814:79;;21883:5;21872:16;;21866:27;;;;21900:88;;21978:4;21971:5;21967:16;21956:27;;21950:38;;;;21995:149;;22108:31;22133:5;22108:31;;;22095:44;;22089:55;;;",
  "source": "pragma solidity ^0.4.24;\npragma experimental ABIEncoderV2;\n\nimport \"zeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\nimport \"zeppelin-solidity/contracts/math/SafeMath.sol\";\n\nimport \"./DecisionEngines/NaiveDecisionEngine.sol\";\nimport \"./interfaces/CreditorProxyCoreInterface.sol\";\nimport \"../shared/libraries/OrderLibrary.sol\";\nimport \"../shared/interfaces/ContractRegistryInterface.sol\";\n\n\ncontract NaiveCreditorProxy is NaiveDecisionEngine, CreditorProxyCoreInterface {\n    using SafeMath for uint;\n\n    mapping (bytes32 => bool) public debtOfferCancelled;\n    mapping (bytes32 => bool) public debtOfferFilled;\n\n    bytes32 constant internal NULL_ISSUANCE_HASH = bytes32(0);\n\n    uint16 constant public EXTERNAL_QUERY_GAS_LIMIT = 8000;\n\n    ContractRegistryInterface public contractRegistry;\n\n    function NaiveCreditorProxy(address _contractRegistry) public {\n        contractRegistry = ContractRegistryInterface(_contractRegistry);\n    }\n\n    function fillDebtOffer(DebtOrder memory order) public returns (bytes32 agreementId) {\n        bytes32 creditorCommitmentHash = hashCreditorCommitmentForOrder(order);\n\n        if (!evaluateConsent(order, creditorCommitmentHash)) {\n            emit CreditorProxyError(uint8(Errors.DEBT_OFFER_NON_CONSENSUAL), order.creditor, creditorCommitmentHash);\n            return NULL_ISSUANCE_HASH;\n        }\n\n        if (debtOfferFilled[creditorCommitmentHash]) {\n            emit CreditorProxyError(uint8(Errors.DEBT_OFFER_ALREADY_FILLED), order.creditor, creditorCommitmentHash);\n            return NULL_ISSUANCE_HASH;\n        }\n\n        if (debtOfferCancelled[creditorCommitmentHash]) {\n            emit CreditorProxyError(uint8(Errors.DEBT_OFFER_CANCELLED), order.creditor, creditorCommitmentHash);\n            return NULL_ISSUANCE_HASH;\n        }\n\n        address principalToken = order.principalToken;\n\n        // The allowance that the token transfer proxy has for this contract's tokens.\n        uint tokenTransferAllowance = getAllowance(\n            principalToken,\n            address(this),\n            contractRegistry.tokenTransferProxy()\n        );\n\n        uint totalCreditorPayment = order.principalAmount.add(order.creditorFee);\n\n        // Ensure the token transfer proxy can transfer tokens from the creditor proxy\n        if (tokenTransferAllowance < totalCreditorPayment) {\n            require(setTokenTransferAllowance(principalToken, totalCreditorPayment));\n        }\n\n        // Transfer principal from creditor to CreditorProxy\n        if (totalCreditorPayment > 0) {\n            require(\n                transferTokensFrom(\n                    principalToken,\n                    order.creditor,\n                    address(this),\n                    totalCreditorPayment\n                )\n            );\n        }\n\n        agreementId = sendOrderToKernel(order);\n\n        require(agreementId != NULL_ISSUANCE_HASH);\n\n        debtOfferFilled[creditorCommitmentHash] = true;\n\n        contractRegistry.debtToken().transfer(order.creditor, uint256(agreementId));\n\n        emit DebtOfferFilled(order.creditor, creditorCommitmentHash, agreementId);\n\n        return agreementId;\n    }\n\n    function sendOrderToKernel(DebtOrder memory order) internal returns (bytes32 id) {\n        address[6] memory orderAddresses;\n        uint[8] memory orderValues;\n        bytes32[1] memory orderBytes32;\n        uint8[3] memory signaturesV;\n        bytes32[3] memory signaturesR;\n        bytes32[3] memory signaturesS;\n\n        (orderAddresses, orderValues, orderBytes32, signaturesV, signaturesR, signaturesS) = unpackDebtOrder(order);\n\n        return contractRegistry.debtKernel().fillDebtOrder(\n            address(this),\n            orderAddresses,\n            orderValues,\n            orderBytes32,\n            signaturesV,\n            signaturesR,\n            signaturesS\n        );\n    }\n\n    /**\n     * Helper function for approving this address' allowance to Dharma's token transfer proxy.\n     */\n    function setTokenTransferAllowance(\n        address token,\n        uint amount\n    )\n        internal\n        returns (bool _success)\n    {\n        return ERC20(token).approve(\n            address(contractRegistry.tokenTransferProxy()),\n            amount\n        );\n    }\n\n    /**\n     * Helper function for querying this contract's allowance for transferring the given token.\n     */\n    function getAllowance(\n        address token,\n        address owner,\n        address granter\n    )\n        internal\n        view\n        returns (uint _allowance)\n    {\n        // Limit gas to prevent reentrancy.\n        return ERC20(token).allowance.gas(EXTERNAL_QUERY_GAS_LIMIT)(\n            owner,\n            granter\n        );\n    }\n\n    function cancelDebtOffer(DebtOrder memory order) public returns (bool succeeded)\n    {\n        // Sender must be the creditor.\n        if (msg.sender != order.creditor) {\n            return false;\n        }\n\n        bytes32 creditorCommitmentHash = hashCreditorCommitmentForOrder(order);\n\n        // Debt offer must not already be filled.\n        if (debtOfferFilled[creditorCommitmentHash]) {\n            return false;\n        }\n\n        debtOfferCancelled[creditorCommitmentHash] = true;\n\n        emit DebtOfferCancelled(order.creditor, creditorCommitmentHash);\n\n        return true;\n    }\n\n    /**\n     * Helper function for transferring a specified amount of tokens between two parties.\n     */\n    function transferTokensFrom(\n        address _token,\n        address _from,\n        address _to,\n        uint _amount\n    )\n        internal\n        returns (bool _success)\n    {\n        return ERC20(_token).transferFrom(_from, _to, _amount);\n    }\n}\n",
  "sourcePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/NaiveCreditorProxy.sol",
  "ast": {
    "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/NaiveCreditorProxy.sol",
    "exportedSymbols": {
      "NaiveCreditorProxy": [
        1260
      ]
    },
    "id": 1261,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 871,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:4"
      },
      {
        "id": 872,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "25:33:4"
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "file": "zeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "id": 873,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 1923,
        "src": "60:59:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "zeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 874,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 1880,
        "src": "120:55:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/DecisionEngines/NaiveDecisionEngine.sol",
        "file": "./DecisionEngines/NaiveDecisionEngine.sol",
        "id": 875,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 501,
        "src": "177:51:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/interfaces/CreditorProxyCoreInterface.sol",
        "file": "./interfaces/CreditorProxyCoreInterface.sol",
        "id": 876,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 1272,
        "src": "229:53:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/libraries/OrderLibrary.sol",
        "file": "../shared/libraries/OrderLibrary.sol",
        "id": 877,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 1741,
        "src": "283:46:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/interfaces/ContractRegistryInterface.sol",
        "file": "../shared/interfaces/ContractRegistryInterface.sol",
        "id": 878,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 1373,
        "src": "330:60:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 879,
              "name": "NaiveDecisionEngine",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 500,
              "src": "424:19:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_NaiveDecisionEngine_$500",
                "typeString": "contract NaiveDecisionEngine"
              }
            },
            "id": 880,
            "nodeType": "InheritanceSpecifier",
            "src": "424:19:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 881,
              "name": "CreditorProxyCoreInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1271,
              "src": "445:26:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CreditorProxyCoreInterface_$1271",
                "typeString": "contract CreditorProxyCoreInterface"
              }
            },
            "id": 882,
            "nodeType": "InheritanceSpecifier",
            "src": "445:26:4"
          }
        ],
        "contractDependencies": [
          500,
          1271,
          1287,
          1305,
          1740,
          1785
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1260,
        "linearizedBaseContracts": [
          1260,
          1271,
          1305,
          1287,
          500,
          1740,
          1785
        ],
        "name": "NaiveCreditorProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 885,
            "libraryName": {
              "contractScope": null,
              "id": 883,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1879,
              "src": "484:8:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$1879",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "478:24:4",
            "typeName": {
              "id": 884,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "497:4:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 889,
            "name": "debtOfferCancelled",
            "nodeType": "VariableDeclaration",
            "scope": 1260,
            "src": "508:51:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
              "typeString": "mapping(bytes32 => bool)"
            },
            "typeName": {
              "id": 888,
              "keyType": {
                "id": 886,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "517:7:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "508:25:4",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                "typeString": "mapping(bytes32 => bool)"
              },
              "valueType": {
                "id": 887,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "528:4:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 893,
            "name": "debtOfferFilled",
            "nodeType": "VariableDeclaration",
            "scope": 1260,
            "src": "565:48:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
              "typeString": "mapping(bytes32 => bool)"
            },
            "typeName": {
              "id": 892,
              "keyType": {
                "id": 890,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "574:7:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "565:25:4",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                "typeString": "mapping(bytes32 => bool)"
              },
              "valueType": {
                "id": 891,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "585:4:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 898,
            "name": "NULL_ISSUANCE_HASH",
            "nodeType": "VariableDeclaration",
            "scope": 1260,
            "src": "620:57:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 894,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "620:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 896,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "675:1:4",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  }
                ],
                "id": 895,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "667:7:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_bytes32_$",
                  "typeString": "type(bytes32)"
                },
                "typeName": "bytes32"
              },
              "id": 897,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "667:10:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 901,
            "name": "EXTERNAL_QUERY_GAS_LIMIT",
            "nodeType": "VariableDeclaration",
            "scope": 1260,
            "src": "684:54:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint16",
              "typeString": "uint16"
            },
            "typeName": {
              "id": 899,
              "name": "uint16",
              "nodeType": "ElementaryTypeName",
              "src": "684:6:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint16",
                "typeString": "uint16"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "38303030",
              "id": 900,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "734:4:4",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_8000_by_1",
                "typeString": "int_const 8000"
              },
              "value": "8000"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 903,
            "name": "contractRegistry",
            "nodeType": "VariableDeclaration",
            "scope": 1260,
            "src": "745:49:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
              "typeString": "contract ContractRegistryInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 902,
              "name": "ContractRegistryInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1372,
              "src": "745:25:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                "typeString": "contract ContractRegistryInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 914,
              "nodeType": "Block",
              "src": "863:80:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 908,
                      "name": "contractRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 903,
                      "src": "873:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                        "typeString": "contract ContractRegistryInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 910,
                          "name": "_contractRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 905,
                          "src": "918:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 909,
                        "name": "ContractRegistryInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1372,
                        "src": "892:25:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ContractRegistryInterface_$1372_$",
                          "typeString": "type(contract ContractRegistryInterface)"
                        }
                      },
                      "id": 911,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "892:44:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                        "typeString": "contract ContractRegistryInterface"
                      }
                    },
                    "src": "873:63:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                      "typeString": "contract ContractRegistryInterface"
                    }
                  },
                  "id": 913,
                  "nodeType": "ExpressionStatement",
                  "src": "873:63:4"
                }
              ]
            },
            "documentation": null,
            "id": 915,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "NaiveCreditorProxy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 906,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 905,
                  "name": "_contractRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 915,
                  "src": "829:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 904,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "829:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "828:27:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 907,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "863:0:4"
            },
            "scope": 1260,
            "src": "801:142:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1075,
              "nodeType": "Block",
              "src": "1033:2110:4",
              "statements": [
                {
                  "assignments": [
                    923
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 923,
                      "name": "creditorCommitmentHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1076,
                      "src": "1043:30:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 922,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1043:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 927,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 925,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 917,
                        "src": "1107:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder memory"
                        }
                      ],
                      "id": 924,
                      "name": "hashCreditorCommitmentForOrder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 499,
                      "src": "1076:30:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_DebtOrder_$1644_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct OrderLibrary.DebtOrder memory) pure returns (bytes32)"
                      }
                    },
                    "id": 926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1076:37:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1043:70:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1128:47:4",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 929,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "1145:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 930,
                          "name": "creditorCommitmentHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 923,
                          "src": "1152:22:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 928,
                        "name": "evaluateConsent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 468,
                        "src": "1129:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_DebtOrder_$1644_memory_ptr_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (struct OrderLibrary.DebtOrder memory,bytes32) pure returns (bool)"
                        }
                      },
                      "id": 931,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1129:46:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 946,
                  "nodeType": "IfStatement",
                  "src": "1124:221:4",
                  "trueBody": {
                    "id": 945,
                    "nodeType": "Block",
                    "src": "1177:168:4",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 935,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1278,
                                    "src": "1221:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Errors_$1278_$",
                                      "typeString": "type(enum CreditorProxyErrors.Errors)"
                                    }
                                  },
                                  "id": 936,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DEBT_OFFER_NON_CONSENSUAL",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1221:32:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                ],
                                "id": 934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1215:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": "uint8"
                              },
                              "id": 937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1215:39:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 938,
                                "name": "order",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 917,
                                "src": "1256:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                                  "typeString": "struct OrderLibrary.DebtOrder memory"
                                }
                              },
                              "id": 939,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "creditor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1617,
                              "src": "1256:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 940,
                              "name": "creditorCommitmentHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 923,
                              "src": "1272:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 933,
                            "name": "CreditorProxyError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1286,
                            "src": "1196:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (uint8,address,bytes32)"
                            }
                          },
                          "id": 941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1196:99:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 942,
                        "nodeType": "EmitStatement",
                        "src": "1191:104:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 943,
                          "name": "NULL_ISSUANCE_HASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 898,
                          "src": "1316:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 921,
                        "id": 944,
                        "nodeType": "Return",
                        "src": "1309:25:4"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 947,
                      "name": "debtOfferFilled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 893,
                      "src": "1359:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                        "typeString": "mapping(bytes32 => bool)"
                      }
                    },
                    "id": 949,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 948,
                      "name": "creditorCommitmentHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 923,
                      "src": "1375:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1359:39:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 963,
                  "nodeType": "IfStatement",
                  "src": "1355:213:4",
                  "trueBody": {
                    "id": 962,
                    "nodeType": "Block",
                    "src": "1400:168:4",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 952,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1278,
                                    "src": "1444:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Errors_$1278_$",
                                      "typeString": "type(enum CreditorProxyErrors.Errors)"
                                    }
                                  },
                                  "id": 953,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DEBT_OFFER_ALREADY_FILLED",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1444:32:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                ],
                                "id": 951,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1438:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": "uint8"
                              },
                              "id": 954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1438:39:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 955,
                                "name": "order",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 917,
                                "src": "1479:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                                  "typeString": "struct OrderLibrary.DebtOrder memory"
                                }
                              },
                              "id": 956,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "creditor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1617,
                              "src": "1479:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 957,
                              "name": "creditorCommitmentHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 923,
                              "src": "1495:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 950,
                            "name": "CreditorProxyError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1286,
                            "src": "1419:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (uint8,address,bytes32)"
                            }
                          },
                          "id": 958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1419:99:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 959,
                        "nodeType": "EmitStatement",
                        "src": "1414:104:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 960,
                          "name": "NULL_ISSUANCE_HASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 898,
                          "src": "1539:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 921,
                        "id": 961,
                        "nodeType": "Return",
                        "src": "1532:25:4"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 964,
                      "name": "debtOfferCancelled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 889,
                      "src": "1582:18:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                        "typeString": "mapping(bytes32 => bool)"
                      }
                    },
                    "id": 966,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 965,
                      "name": "creditorCommitmentHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 923,
                      "src": "1601:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1582:42:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 980,
                  "nodeType": "IfStatement",
                  "src": "1578:211:4",
                  "trueBody": {
                    "id": 979,
                    "nodeType": "Block",
                    "src": "1626:163:4",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 969,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1278,
                                    "src": "1670:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Errors_$1278_$",
                                      "typeString": "type(enum CreditorProxyErrors.Errors)"
                                    }
                                  },
                                  "id": 970,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DEBT_OFFER_CANCELLED",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1670:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                ],
                                "id": 968,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1664:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": "uint8"
                              },
                              "id": 971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1664:34:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 972,
                                "name": "order",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 917,
                                "src": "1700:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                                  "typeString": "struct OrderLibrary.DebtOrder memory"
                                }
                              },
                              "id": 973,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "creditor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1617,
                              "src": "1700:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 974,
                              "name": "creditorCommitmentHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 923,
                              "src": "1716:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 967,
                            "name": "CreditorProxyError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1286,
                            "src": "1645:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (uint8,address,bytes32)"
                            }
                          },
                          "id": 975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1645:94:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 976,
                        "nodeType": "EmitStatement",
                        "src": "1640:99:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 977,
                          "name": "NULL_ISSUANCE_HASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 898,
                          "src": "1760:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 921,
                        "id": 978,
                        "nodeType": "Return",
                        "src": "1753:25:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    982
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 982,
                      "name": "principalToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 1076,
                      "src": "1799:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 981,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1799:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 985,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 983,
                      "name": "order",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 917,
                      "src": "1824:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                        "typeString": "struct OrderLibrary.DebtOrder memory"
                      }
                    },
                    "id": 984,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "principalToken",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1607,
                    "src": "1824:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1799:45:4"
                },
                {
                  "assignments": [
                    987
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 987,
                      "name": "tokenTransferAllowance",
                      "nodeType": "VariableDeclaration",
                      "scope": 1076,
                      "src": "1942:27:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 986,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1942:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 997,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 989,
                        "name": "principalToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 982,
                        "src": "1998:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 991,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2020,
                            "src": "2034:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                              "typeString": "contract NaiveCreditorProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                              "typeString": "contract NaiveCreditorProxy"
                            }
                          ],
                          "id": 990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2026:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2026:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 993,
                            "name": "contractRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 903,
                            "src": "2053:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                              "typeString": "contract ContractRegistryInterface"
                            }
                          },
                          "id": 994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tokenTransferProxy",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1335,
                          "src": "2053:35:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_TokenTransferProxyInterface_$1595_$",
                            "typeString": "function () view external returns (contract TokenTransferProxyInterface)"
                          }
                        },
                        "id": 995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2053:37:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenTransferProxyInterface_$1595",
                          "typeString": "contract TokenTransferProxyInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_TokenTransferProxyInterface_$1595",
                          "typeString": "contract TokenTransferProxyInterface"
                        }
                      ],
                      "id": 988,
                      "name": "getAllowance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1192,
                      "src": "1972:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address,address,address) view returns (uint256)"
                      }
                    },
                    "id": 996,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1972:128:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1942:158:4"
                },
                {
                  "assignments": [
                    999
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 999,
                      "name": "totalCreditorPayment",
                      "nodeType": "VariableDeclaration",
                      "scope": 1076,
                      "src": "2111:25:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 998,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2111:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1006,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1003,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "2165:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 1004,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditorFee",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1619,
                        "src": "2165:17:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1000,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "2139:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 1001,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1605,
                        "src": "2139:21:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1002,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1878,
                      "src": "2139:25:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 1005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2139:44:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2111:72:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1009,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1007,
                      "name": "tokenTransferAllowance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 987,
                      "src": "2285:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1008,
                      "name": "totalCreditorPayment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 999,
                      "src": "2310:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2285:45:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1018,
                  "nodeType": "IfStatement",
                  "src": "2281:148:4",
                  "trueBody": {
                    "id": 1017,
                    "nodeType": "Block",
                    "src": "2332:97:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1012,
                                  "name": "principalToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 982,
                                  "src": "2380:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1013,
                                  "name": "totalCreditorPayment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 999,
                                  "src": "2396:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1011,
                                "name": "setTokenTransferAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1169,
                                "src": "2354:25:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) returns (bool)"
                                }
                              },
                              "id": 1014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2354:63:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1010,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1972,
                              1973
                            ],
                            "referencedDeclaration": 1972,
                            "src": "2346:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 1015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2346:72:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1016,
                        "nodeType": "ExpressionStatement",
                        "src": "2346:72:4"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1019,
                      "name": "totalCreditorPayment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 999,
                      "src": "2504:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1020,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2527:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2504:24:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1035,
                  "nodeType": "IfStatement",
                  "src": "2500:279:4",
                  "trueBody": {
                    "id": 1034,
                    "nodeType": "Block",
                    "src": "2530:249:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1024,
                                  "name": "principalToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 982,
                                  "src": "2609:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1025,
                                    "name": "order",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 917,
                                    "src": "2645:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                                      "typeString": "struct OrderLibrary.DebtOrder memory"
                                    }
                                  },
                                  "id": 1026,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "creditor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1617,
                                  "src": "2645:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1028,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2020,
                                      "src": "2689:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                                        "typeString": "contract NaiveCreditorProxy"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                                        "typeString": "contract NaiveCreditorProxy"
                                      }
                                    ],
                                    "id": 1027,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2681:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 1029,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2681:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1030,
                                  "name": "totalCreditorPayment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 999,
                                  "src": "2716:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1023,
                                "name": "transferTokensFrom",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1259,
                                "src": "2569:18:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,address,uint256) returns (bool)"
                                }
                              },
                              "id": 1031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2569:185:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1022,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1972,
                              1973
                            ],
                            "referencedDeclaration": 1972,
                            "src": "2544:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 1032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2544:224:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1033,
                        "nodeType": "ExpressionStatement",
                        "src": "2544:224:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1036,
                      "name": "agreementId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 920,
                      "src": "2789:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1038,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "2821:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        ],
                        "id": 1037,
                        "name": "sendOrderToKernel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1147,
                        "src": "2803:17:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_DebtOrder_$1644_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (struct OrderLibrary.DebtOrder memory) returns (bytes32)"
                        }
                      },
                      "id": 1039,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2803:24:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2789:38:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1041,
                  "nodeType": "ExpressionStatement",
                  "src": "2789:38:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 1045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1043,
                          "name": "agreementId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 920,
                          "src": "2846:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1044,
                          "name": "NULL_ISSUANCE_HASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 898,
                          "src": "2861:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2846:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1042,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1972,
                        1973
                      ],
                      "referencedDeclaration": 1972,
                      "src": "2838:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2838:42:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1047,
                  "nodeType": "ExpressionStatement",
                  "src": "2838:42:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1048,
                        "name": "debtOfferFilled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 893,
                        "src": "2891:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 1050,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1049,
                        "name": "creditorCommitmentHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 923,
                        "src": "2907:22:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2891:39:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1051,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2933:4:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2891:46:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1053,
                  "nodeType": "ExpressionStatement",
                  "src": "2891:46:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1059,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "2986:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 1060,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1617,
                        "src": "2986:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1062,
                            "name": "agreementId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 920,
                            "src": "3010:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3002:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 1063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3002:20:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1054,
                            "name": "contractRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 903,
                            "src": "2948:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                              "typeString": "contract ContractRegistryInterface"
                            }
                          },
                          "id": 1056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "debtToken",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1333,
                          "src": "2948:26:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DebtTokenInterface_$1518_$",
                            "typeString": "function () view external returns (contract DebtTokenInterface)"
                          }
                        },
                        "id": 1057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2948:28:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DebtTokenInterface_$1518",
                          "typeString": "contract DebtTokenInterface"
                        }
                      },
                      "id": 1058,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1517,
                      "src": "2948:37:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2948:75:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1065,
                  "nodeType": "ExpressionStatement",
                  "src": "2948:75:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1067,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "3055:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 1068,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1617,
                        "src": "3055:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1069,
                        "name": "creditorCommitmentHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 923,
                        "src": "3071:22:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1070,
                        "name": "agreementId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 920,
                        "src": "3095:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1066,
                      "name": "DebtOfferFilled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1304,
                      "src": "3039:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32)"
                      }
                    },
                    "id": 1071,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3039:68:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1072,
                  "nodeType": "EmitStatement",
                  "src": "3034:73:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1073,
                    "name": "agreementId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 920,
                    "src": "3125:11:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 921,
                  "id": 1074,
                  "nodeType": "Return",
                  "src": "3118:18:4"
                }
              ]
            },
            "documentation": null,
            "id": 1076,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "fillDebtOffer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 917,
                  "name": "order",
                  "nodeType": "VariableDeclaration",
                  "scope": 1076,
                  "src": "972:22:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                    "typeString": "struct OrderLibrary.DebtOrder"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 916,
                    "name": "DebtOrder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1644,
                    "src": "972:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DebtOrder_$1644_storage_ptr",
                      "typeString": "struct OrderLibrary.DebtOrder"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "971:24:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 921,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 920,
                  "name": "agreementId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1076,
                  "src": "1012:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 919,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1012:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1011:21:4"
            },
            "scope": 1260,
            "src": "949:2194:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1146,
              "nodeType": "Block",
              "src": "3230:610:4",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1087,
                      "name": "orderAddresses",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3240:32:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$6_memory_ptr",
                        "typeString": "address[6]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1085,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3240:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1086,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "36",
                          "id": 1084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3248:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "6"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3240:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$6_storage_ptr",
                          "typeString": "address[6]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1088,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3240:32:4"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1093,
                      "name": "orderValues",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3282:26:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$8_memory_ptr",
                        "typeString": "uint256[8]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1091,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3282:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1092,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 1090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3287:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "8"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3282:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$8_storage_ptr",
                          "typeString": "uint256[8]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1094,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3282:26:4"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1099,
                      "name": "orderBytes32",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3318:30:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$1_memory_ptr",
                        "typeString": "bytes32[1]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1097,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3318:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1098,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3326:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "1"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3318:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$1_storage_ptr",
                          "typeString": "bytes32[1]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1100,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3318:30:4"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1105,
                      "name": "signaturesV",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3358:27:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint8_$3_memory_ptr",
                        "typeString": "uint8[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1103,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3358:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 1104,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 1102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3364:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3358:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$3_storage_ptr",
                          "typeString": "uint8[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1106,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3358:27:4"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1111,
                      "name": "signaturesR",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3395:29:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                        "typeString": "bytes32[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1109,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3395:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1110,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 1108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3403:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3395:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                          "typeString": "bytes32[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1112,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3395:29:4"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1117,
                      "name": "signaturesS",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3434:29:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                        "typeString": "bytes32[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1115,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3434:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1116,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 1114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3442:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3434:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                          "typeString": "bytes32[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1118,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3434:29:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1129,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1119,
                          "name": "orderAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1087,
                          "src": "3475:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$6_memory_ptr",
                            "typeString": "address[6] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1120,
                          "name": "orderValues",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1093,
                          "src": "3491:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$8_memory_ptr",
                            "typeString": "uint256[8] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1121,
                          "name": "orderBytes32",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1099,
                          "src": "3504:12:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$1_memory_ptr",
                            "typeString": "bytes32[1] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1122,
                          "name": "signaturesV",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1105,
                          "src": "3518:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$3_memory_ptr",
                            "typeString": "uint8[3] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1123,
                          "name": "signaturesR",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1111,
                          "src": "3531:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                            "typeString": "bytes32[3] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1124,
                          "name": "signaturesS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "3544:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                            "typeString": "bytes32[3] memory"
                          }
                        }
                      ],
                      "id": 1125,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "3474:82:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_address_$6_memory_ptr_$_t_array$_t_uint256_$8_memory_ptr_$_t_array$_t_bytes32_$1_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$",
                        "typeString": "tuple(address[6] memory,uint256[8] memory,bytes32[1] memory,uint8[3] memory,bytes32[3] memory,bytes32[3] memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1127,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1078,
                          "src": "3575:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        ],
                        "id": 1126,
                        "name": "unpackDebtOrder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1739,
                        "src": "3559:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_DebtOrder_$1644_memory_ptr_$returns$_t_array$_t_address_$6_memory_ptr_$_t_array$_t_uint256_$8_memory_ptr_$_t_array$_t_bytes32_$1_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$",
                          "typeString": "function (struct OrderLibrary.DebtOrder memory) pure returns (address[6] memory,uint256[8] memory,bytes32[1] memory,uint8[3] memory,bytes32[3] memory,bytes32[3] memory)"
                        }
                      },
                      "id": 1128,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3559:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_address_$6_memory_ptr_$_t_array$_t_uint256_$8_memory_ptr_$_t_array$_t_bytes32_$1_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$",
                        "typeString": "tuple(address[6] memory,uint256[8] memory,bytes32[1] memory,uint8[3] memory,bytes32[3] memory,bytes32[3] memory)"
                      }
                    },
                    "src": "3474:107:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1130,
                  "nodeType": "ExpressionStatement",
                  "src": "3474:107:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1136,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2020,
                            "src": "3664:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                              "typeString": "contract NaiveCreditorProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                              "typeString": "contract NaiveCreditorProxy"
                            }
                          ],
                          "id": 1135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3656:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3656:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1138,
                        "name": "orderAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1087,
                        "src": "3683:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$6_memory_ptr",
                          "typeString": "address[6] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1139,
                        "name": "orderValues",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1093,
                        "src": "3711:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$8_memory_ptr",
                          "typeString": "uint256[8] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1140,
                        "name": "orderBytes32",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1099,
                        "src": "3736:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$1_memory_ptr",
                          "typeString": "bytes32[1] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1141,
                        "name": "signaturesV",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1105,
                        "src": "3762:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$3_memory_ptr",
                          "typeString": "uint8[3] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1142,
                        "name": "signaturesR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1111,
                        "src": "3787:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                          "typeString": "bytes32[3] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1143,
                        "name": "signaturesS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1117,
                        "src": "3812:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                          "typeString": "bytes32[3] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$6_memory_ptr",
                          "typeString": "address[6] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$8_memory_ptr",
                          "typeString": "uint256[8] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$1_memory_ptr",
                          "typeString": "bytes32[1] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint8_$3_memory_ptr",
                          "typeString": "uint8[3] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                          "typeString": "bytes32[3] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                          "typeString": "bytes32[3] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1131,
                            "name": "contractRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 903,
                            "src": "3599:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                              "typeString": "contract ContractRegistryInterface"
                            }
                          },
                          "id": 1132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "debtKernel",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1331,
                          "src": "3599:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DebtKernelInterface_$1507_$",
                            "typeString": "function () view external returns (contract DebtKernelInterface)"
                          }
                        },
                        "id": 1133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3599:29:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DebtKernelInterface_$1507",
                          "typeString": "contract DebtKernelInterface"
                        }
                      },
                      "id": 1134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "fillDebtOrder",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1506,
                      "src": "3599:43:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_address_$6_memory_ptr_$_t_array$_t_uint256_$8_memory_ptr_$_t_array$_t_bytes32_$1_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (address,address[6] memory,uint256[8] memory,bytes32[1] memory,uint8[3] memory,bytes32[3] memory,bytes32[3] memory) external returns (bytes32)"
                      }
                    },
                    "id": 1144,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3599:234:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1082,
                  "id": 1145,
                  "nodeType": "Return",
                  "src": "3592:241:4"
                }
              ]
            },
            "documentation": null,
            "id": 1147,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "sendOrderToKernel",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1079,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1078,
                  "name": "order",
                  "nodeType": "VariableDeclaration",
                  "scope": 1147,
                  "src": "3176:22:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                    "typeString": "struct OrderLibrary.DebtOrder"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1077,
                    "name": "DebtOrder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1644,
                    "src": "3176:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DebtOrder_$1644_storage_ptr",
                      "typeString": "struct OrderLibrary.DebtOrder"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3175:24:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1082,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1081,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1147,
                  "src": "3218:10:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1080,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3218:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3217:12:4"
            },
            "scope": 1260,
            "src": "3149:691:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1168,
              "nodeType": "Block",
              "src": "4095:134:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1161,
                                "name": "contractRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 903,
                                "src": "4154:16:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                                  "typeString": "contract ContractRegistryInterface"
                                }
                              },
                              "id": 1162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokenTransferProxy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1335,
                              "src": "4154:35:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_TokenTransferProxyInterface_$1595_$",
                                "typeString": "function () view external returns (contract TokenTransferProxyInterface)"
                              }
                            },
                            "id": 1163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4154:37:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenTransferProxyInterface_$1595",
                              "typeString": "contract TokenTransferProxyInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_TokenTransferProxyInterface_$1595",
                              "typeString": "contract TokenTransferProxyInterface"
                            }
                          ],
                          "id": 1160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4146:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4146:46:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1165,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1151,
                        "src": "4206:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1157,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1149,
                            "src": "4118:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1156,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1922,
                          "src": "4112:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$1922_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 1158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4112:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$1922",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 1159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1913,
                      "src": "4112:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 1166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4112:110:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1155,
                  "id": 1167,
                  "nodeType": "Return",
                  "src": "4105:117:4"
                }
              ]
            },
            "documentation": "Helper function for approving this address' allowance to Dharma's token transfer proxy.",
            "id": 1169,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setTokenTransferAllowance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1149,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "4001:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1148,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4001:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1151,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "4024:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1150,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4024:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3991:50:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1154,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "4076:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1153,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4076:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4075:15:4"
            },
            "scope": 1260,
            "src": "3957:272:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1191,
              "nodeType": "Block",
              "src": "4514:170:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1187,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1173,
                        "src": "4641:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1188,
                        "name": "granter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1175,
                        "src": "4660:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1185,
                          "name": "EXTERNAL_QUERY_GAS_LIMIT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 901,
                          "src": "4602:24:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1181,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1171,
                                "src": "4581:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1180,
                              "name": "ERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1922,
                              "src": "4575:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20_$1922_$",
                                "typeString": "type(contract ERC20)"
                              }
                            },
                            "id": 1182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4575:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$1922",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 1183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "allowance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1893,
                          "src": "4575:22:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address,address) view external returns (uint256)"
                          }
                        },
                        "id": 1184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "gas",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4575:26:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_setgas_nonpayable$_t_uint256_$returns$_t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$gas_$",
                          "typeString": "function (uint256) returns (function (address,address) view external returns (uint256))"
                        }
                      },
                      "id": 1186,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4575:52:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$gas",
                        "typeString": "function (address,address) view external returns (uint256)"
                      }
                    },
                    "id": 1189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4575:102:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1179,
                  "id": 1190,
                  "nodeType": "Return",
                  "src": "4568:109:4"
                }
              ]
            },
            "documentation": "Helper function for querying this contract's allowance for transferring the given token.",
            "id": 1192,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getAllowance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1176,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1171,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 1192,
                  "src": "4378:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1170,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4378:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1173,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1192,
                  "src": "4401:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1172,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4401:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1175,
                  "name": "granter",
                  "nodeType": "VariableDeclaration",
                  "scope": 1192,
                  "src": "4424:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1174,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4424:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4368:77:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1178,
                  "name": "_allowance",
                  "nodeType": "VariableDeclaration",
                  "scope": 1192,
                  "src": "4493:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1177,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4493:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4492:17:4"
            },
            "scope": 1260,
            "src": "4347:337:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1235,
              "nodeType": "Block",
              "src": "4775:506:4",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1199,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1969,
                        "src": "4829:3:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1200,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4829:10:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1201,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1194,
                        "src": "4843:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder memory"
                        }
                      },
                      "id": 1202,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "creditor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1617,
                      "src": "4843:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4829:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1207,
                  "nodeType": "IfStatement",
                  "src": "4825:71:4",
                  "trueBody": {
                    "id": 1206,
                    "nodeType": "Block",
                    "src": "4859:37:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 1204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4880:5:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 1198,
                        "id": 1205,
                        "nodeType": "Return",
                        "src": "4873:12:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1209
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1209,
                      "name": "creditorCommitmentHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1236,
                      "src": "4906:30:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1208,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4906:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1213,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1211,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1194,
                        "src": "4970:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder memory"
                        }
                      ],
                      "id": 1210,
                      "name": "hashCreditorCommitmentForOrder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 499,
                      "src": "4939:30:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_DebtOrder_$1644_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct OrderLibrary.DebtOrder memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4939:37:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4906:70:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1214,
                      "name": "debtOfferFilled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 893,
                      "src": "5041:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                        "typeString": "mapping(bytes32 => bool)"
                      }
                    },
                    "id": 1216,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1215,
                      "name": "creditorCommitmentHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1209,
                      "src": "5057:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5041:39:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1220,
                  "nodeType": "IfStatement",
                  "src": "5037:82:4",
                  "trueBody": {
                    "id": 1219,
                    "nodeType": "Block",
                    "src": "5082:37:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 1217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5103:5:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 1198,
                        "id": 1218,
                        "nodeType": "Return",
                        "src": "5096:12:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1221,
                        "name": "debtOfferCancelled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 889,
                        "src": "5129:18:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 1223,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1222,
                        "name": "creditorCommitmentHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1209,
                        "src": "5148:22:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5129:42:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5174:4:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "5129:49:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1226,
                  "nodeType": "ExpressionStatement",
                  "src": "5129:49:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1228,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1194,
                          "src": "5213:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 1229,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1617,
                        "src": "5213:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1230,
                        "name": "creditorCommitmentHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1209,
                        "src": "5229:22:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1227,
                      "name": "DebtOfferCancelled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1296,
                      "src": "5194:18:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 1231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5194:58:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1232,
                  "nodeType": "EmitStatement",
                  "src": "5189:63:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 1233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5270:4:4",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 1198,
                  "id": 1234,
                  "nodeType": "Return",
                  "src": "5263:11:4"
                }
              ]
            },
            "documentation": null,
            "id": 1236,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "cancelDebtOffer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1195,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1194,
                  "name": "order",
                  "nodeType": "VariableDeclaration",
                  "scope": 1236,
                  "src": "4715:22:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                    "typeString": "struct OrderLibrary.DebtOrder"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1193,
                    "name": "DebtOrder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1644,
                    "src": "4715:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DebtOrder_$1644_storage_ptr",
                      "typeString": "struct OrderLibrary.DebtOrder"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4714:24:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1197,
                  "name": "succeeded",
                  "nodeType": "VariableDeclaration",
                  "scope": 1236,
                  "src": "4755:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1196,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4755:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4754:16:4"
            },
            "scope": 1260,
            "src": "4690:591:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1258,
              "nodeType": "Block",
              "src": "5570:71:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1253,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1240,
                        "src": "5614:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1254,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "5621:3:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1255,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1244,
                        "src": "5626:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1250,
                            "name": "_token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1238,
                            "src": "5593:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1249,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1922,
                          "src": "5587:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$1922_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 1251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5587:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$1922",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 1252,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1904,
                      "src": "5587:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256) external returns (bool)"
                      }
                    },
                    "id": 1256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5587:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1248,
                  "id": 1257,
                  "nodeType": "Return",
                  "src": "5580:54:4"
                }
              ]
            },
            "documentation": "Helper function for transferring a specified amount of tokens between two parties.",
            "id": 1259,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transferTokensFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1238,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 1259,
                  "src": "5430:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1237,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5430:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1240,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 1259,
                  "src": "5454:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1239,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5454:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1242,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 1259,
                  "src": "5477:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1241,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5477:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1244,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1259,
                  "src": "5498:12:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1243,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5498:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5420:96:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1248,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1247,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 1259,
                  "src": "5551:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1246,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5551:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5550:15:4"
            },
            "scope": 1260,
            "src": "5393:248:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 1261,
        "src": "393:5250:4"
      }
    ],
    "src": "0:5644:4"
  },
  "legacyAST": {
    "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/NaiveCreditorProxy.sol",
    "exportedSymbols": {
      "NaiveCreditorProxy": [
        1260
      ]
    },
    "id": 1261,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 871,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:4"
      },
      {
        "id": 872,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "25:33:4"
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "file": "zeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "id": 873,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 1923,
        "src": "60:59:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "zeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 874,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 1880,
        "src": "120:55:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/DecisionEngines/NaiveDecisionEngine.sol",
        "file": "./DecisionEngines/NaiveDecisionEngine.sol",
        "id": 875,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 501,
        "src": "177:51:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/interfaces/CreditorProxyCoreInterface.sol",
        "file": "./interfaces/CreditorProxyCoreInterface.sol",
        "id": 876,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 1272,
        "src": "229:53:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/libraries/OrderLibrary.sol",
        "file": "../shared/libraries/OrderLibrary.sol",
        "id": 877,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 1741,
        "src": "283:46:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/interfaces/ContractRegistryInterface.sol",
        "file": "../shared/interfaces/ContractRegistryInterface.sol",
        "id": 878,
        "nodeType": "ImportDirective",
        "scope": 1261,
        "sourceUnit": 1373,
        "src": "330:60:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 879,
              "name": "NaiveDecisionEngine",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 500,
              "src": "424:19:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_NaiveDecisionEngine_$500",
                "typeString": "contract NaiveDecisionEngine"
              }
            },
            "id": 880,
            "nodeType": "InheritanceSpecifier",
            "src": "424:19:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 881,
              "name": "CreditorProxyCoreInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1271,
              "src": "445:26:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CreditorProxyCoreInterface_$1271",
                "typeString": "contract CreditorProxyCoreInterface"
              }
            },
            "id": 882,
            "nodeType": "InheritanceSpecifier",
            "src": "445:26:4"
          }
        ],
        "contractDependencies": [
          500,
          1271,
          1287,
          1305,
          1740,
          1785
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1260,
        "linearizedBaseContracts": [
          1260,
          1271,
          1305,
          1287,
          500,
          1740,
          1785
        ],
        "name": "NaiveCreditorProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 885,
            "libraryName": {
              "contractScope": null,
              "id": 883,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1879,
              "src": "484:8:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$1879",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "478:24:4",
            "typeName": {
              "id": 884,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "497:4:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 889,
            "name": "debtOfferCancelled",
            "nodeType": "VariableDeclaration",
            "scope": 1260,
            "src": "508:51:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
              "typeString": "mapping(bytes32 => bool)"
            },
            "typeName": {
              "id": 888,
              "keyType": {
                "id": 886,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "517:7:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "508:25:4",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                "typeString": "mapping(bytes32 => bool)"
              },
              "valueType": {
                "id": 887,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "528:4:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 893,
            "name": "debtOfferFilled",
            "nodeType": "VariableDeclaration",
            "scope": 1260,
            "src": "565:48:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
              "typeString": "mapping(bytes32 => bool)"
            },
            "typeName": {
              "id": 892,
              "keyType": {
                "id": 890,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "574:7:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "565:25:4",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                "typeString": "mapping(bytes32 => bool)"
              },
              "valueType": {
                "id": 891,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "585:4:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 898,
            "name": "NULL_ISSUANCE_HASH",
            "nodeType": "VariableDeclaration",
            "scope": 1260,
            "src": "620:57:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 894,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "620:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 896,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "675:1:4",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  }
                ],
                "id": 895,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "667:7:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_bytes32_$",
                  "typeString": "type(bytes32)"
                },
                "typeName": "bytes32"
              },
              "id": 897,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "667:10:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 901,
            "name": "EXTERNAL_QUERY_GAS_LIMIT",
            "nodeType": "VariableDeclaration",
            "scope": 1260,
            "src": "684:54:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint16",
              "typeString": "uint16"
            },
            "typeName": {
              "id": 899,
              "name": "uint16",
              "nodeType": "ElementaryTypeName",
              "src": "684:6:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint16",
                "typeString": "uint16"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "38303030",
              "id": 900,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "734:4:4",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_8000_by_1",
                "typeString": "int_const 8000"
              },
              "value": "8000"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 903,
            "name": "contractRegistry",
            "nodeType": "VariableDeclaration",
            "scope": 1260,
            "src": "745:49:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
              "typeString": "contract ContractRegistryInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 902,
              "name": "ContractRegistryInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1372,
              "src": "745:25:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                "typeString": "contract ContractRegistryInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 914,
              "nodeType": "Block",
              "src": "863:80:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 908,
                      "name": "contractRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 903,
                      "src": "873:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                        "typeString": "contract ContractRegistryInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 910,
                          "name": "_contractRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 905,
                          "src": "918:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 909,
                        "name": "ContractRegistryInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1372,
                        "src": "892:25:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ContractRegistryInterface_$1372_$",
                          "typeString": "type(contract ContractRegistryInterface)"
                        }
                      },
                      "id": 911,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "892:44:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                        "typeString": "contract ContractRegistryInterface"
                      }
                    },
                    "src": "873:63:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                      "typeString": "contract ContractRegistryInterface"
                    }
                  },
                  "id": 913,
                  "nodeType": "ExpressionStatement",
                  "src": "873:63:4"
                }
              ]
            },
            "documentation": null,
            "id": 915,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "NaiveCreditorProxy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 906,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 905,
                  "name": "_contractRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 915,
                  "src": "829:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 904,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "829:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "828:27:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 907,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "863:0:4"
            },
            "scope": 1260,
            "src": "801:142:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1075,
              "nodeType": "Block",
              "src": "1033:2110:4",
              "statements": [
                {
                  "assignments": [
                    923
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 923,
                      "name": "creditorCommitmentHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1076,
                      "src": "1043:30:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 922,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1043:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 927,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 925,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 917,
                        "src": "1107:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder memory"
                        }
                      ],
                      "id": 924,
                      "name": "hashCreditorCommitmentForOrder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 499,
                      "src": "1076:30:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_DebtOrder_$1644_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct OrderLibrary.DebtOrder memory) pure returns (bytes32)"
                      }
                    },
                    "id": 926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1076:37:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1043:70:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1128:47:4",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 929,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "1145:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 930,
                          "name": "creditorCommitmentHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 923,
                          "src": "1152:22:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 928,
                        "name": "evaluateConsent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 468,
                        "src": "1129:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_DebtOrder_$1644_memory_ptr_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (struct OrderLibrary.DebtOrder memory,bytes32) pure returns (bool)"
                        }
                      },
                      "id": 931,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1129:46:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 946,
                  "nodeType": "IfStatement",
                  "src": "1124:221:4",
                  "trueBody": {
                    "id": 945,
                    "nodeType": "Block",
                    "src": "1177:168:4",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 935,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1278,
                                    "src": "1221:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Errors_$1278_$",
                                      "typeString": "type(enum CreditorProxyErrors.Errors)"
                                    }
                                  },
                                  "id": 936,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DEBT_OFFER_NON_CONSENSUAL",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1221:32:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                ],
                                "id": 934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1215:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": "uint8"
                              },
                              "id": 937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1215:39:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 938,
                                "name": "order",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 917,
                                "src": "1256:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                                  "typeString": "struct OrderLibrary.DebtOrder memory"
                                }
                              },
                              "id": 939,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "creditor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1617,
                              "src": "1256:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 940,
                              "name": "creditorCommitmentHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 923,
                              "src": "1272:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 933,
                            "name": "CreditorProxyError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1286,
                            "src": "1196:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (uint8,address,bytes32)"
                            }
                          },
                          "id": 941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1196:99:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 942,
                        "nodeType": "EmitStatement",
                        "src": "1191:104:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 943,
                          "name": "NULL_ISSUANCE_HASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 898,
                          "src": "1316:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 921,
                        "id": 944,
                        "nodeType": "Return",
                        "src": "1309:25:4"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 947,
                      "name": "debtOfferFilled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 893,
                      "src": "1359:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                        "typeString": "mapping(bytes32 => bool)"
                      }
                    },
                    "id": 949,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 948,
                      "name": "creditorCommitmentHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 923,
                      "src": "1375:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1359:39:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 963,
                  "nodeType": "IfStatement",
                  "src": "1355:213:4",
                  "trueBody": {
                    "id": 962,
                    "nodeType": "Block",
                    "src": "1400:168:4",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 952,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1278,
                                    "src": "1444:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Errors_$1278_$",
                                      "typeString": "type(enum CreditorProxyErrors.Errors)"
                                    }
                                  },
                                  "id": 953,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DEBT_OFFER_ALREADY_FILLED",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1444:32:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                ],
                                "id": 951,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1438:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": "uint8"
                              },
                              "id": 954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1438:39:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 955,
                                "name": "order",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 917,
                                "src": "1479:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                                  "typeString": "struct OrderLibrary.DebtOrder memory"
                                }
                              },
                              "id": 956,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "creditor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1617,
                              "src": "1479:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 957,
                              "name": "creditorCommitmentHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 923,
                              "src": "1495:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 950,
                            "name": "CreditorProxyError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1286,
                            "src": "1419:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (uint8,address,bytes32)"
                            }
                          },
                          "id": 958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1419:99:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 959,
                        "nodeType": "EmitStatement",
                        "src": "1414:104:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 960,
                          "name": "NULL_ISSUANCE_HASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 898,
                          "src": "1539:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 921,
                        "id": 961,
                        "nodeType": "Return",
                        "src": "1532:25:4"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 964,
                      "name": "debtOfferCancelled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 889,
                      "src": "1582:18:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                        "typeString": "mapping(bytes32 => bool)"
                      }
                    },
                    "id": 966,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 965,
                      "name": "creditorCommitmentHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 923,
                      "src": "1601:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1582:42:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 980,
                  "nodeType": "IfStatement",
                  "src": "1578:211:4",
                  "trueBody": {
                    "id": 979,
                    "nodeType": "Block",
                    "src": "1626:163:4",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 969,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1278,
                                    "src": "1670:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Errors_$1278_$",
                                      "typeString": "type(enum CreditorProxyErrors.Errors)"
                                    }
                                  },
                                  "id": 970,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DEBT_OFFER_CANCELLED",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1670:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_Errors_$1278",
                                    "typeString": "enum CreditorProxyErrors.Errors"
                                  }
                                ],
                                "id": 968,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1664:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": "uint8"
                              },
                              "id": 971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1664:34:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 972,
                                "name": "order",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 917,
                                "src": "1700:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                                  "typeString": "struct OrderLibrary.DebtOrder memory"
                                }
                              },
                              "id": 973,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "creditor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1617,
                              "src": "1700:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 974,
                              "name": "creditorCommitmentHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 923,
                              "src": "1716:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 967,
                            "name": "CreditorProxyError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1286,
                            "src": "1645:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (uint8,address,bytes32)"
                            }
                          },
                          "id": 975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1645:94:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 976,
                        "nodeType": "EmitStatement",
                        "src": "1640:99:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 977,
                          "name": "NULL_ISSUANCE_HASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 898,
                          "src": "1760:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 921,
                        "id": 978,
                        "nodeType": "Return",
                        "src": "1753:25:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    982
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 982,
                      "name": "principalToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 1076,
                      "src": "1799:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 981,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1799:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 985,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 983,
                      "name": "order",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 917,
                      "src": "1824:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                        "typeString": "struct OrderLibrary.DebtOrder memory"
                      }
                    },
                    "id": 984,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "principalToken",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1607,
                    "src": "1824:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1799:45:4"
                },
                {
                  "assignments": [
                    987
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 987,
                      "name": "tokenTransferAllowance",
                      "nodeType": "VariableDeclaration",
                      "scope": 1076,
                      "src": "1942:27:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 986,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1942:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 997,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 989,
                        "name": "principalToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 982,
                        "src": "1998:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 991,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2020,
                            "src": "2034:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                              "typeString": "contract NaiveCreditorProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                              "typeString": "contract NaiveCreditorProxy"
                            }
                          ],
                          "id": 990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2026:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2026:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 993,
                            "name": "contractRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 903,
                            "src": "2053:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                              "typeString": "contract ContractRegistryInterface"
                            }
                          },
                          "id": 994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tokenTransferProxy",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1335,
                          "src": "2053:35:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_TokenTransferProxyInterface_$1595_$",
                            "typeString": "function () view external returns (contract TokenTransferProxyInterface)"
                          }
                        },
                        "id": 995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2053:37:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenTransferProxyInterface_$1595",
                          "typeString": "contract TokenTransferProxyInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_TokenTransferProxyInterface_$1595",
                          "typeString": "contract TokenTransferProxyInterface"
                        }
                      ],
                      "id": 988,
                      "name": "getAllowance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1192,
                      "src": "1972:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address,address,address) view returns (uint256)"
                      }
                    },
                    "id": 996,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1972:128:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1942:158:4"
                },
                {
                  "assignments": [
                    999
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 999,
                      "name": "totalCreditorPayment",
                      "nodeType": "VariableDeclaration",
                      "scope": 1076,
                      "src": "2111:25:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 998,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2111:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1006,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1003,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "2165:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 1004,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditorFee",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1619,
                        "src": "2165:17:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1000,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "2139:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 1001,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1605,
                        "src": "2139:21:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1002,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1878,
                      "src": "2139:25:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 1005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2139:44:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2111:72:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1009,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1007,
                      "name": "tokenTransferAllowance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 987,
                      "src": "2285:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1008,
                      "name": "totalCreditorPayment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 999,
                      "src": "2310:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2285:45:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1018,
                  "nodeType": "IfStatement",
                  "src": "2281:148:4",
                  "trueBody": {
                    "id": 1017,
                    "nodeType": "Block",
                    "src": "2332:97:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1012,
                                  "name": "principalToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 982,
                                  "src": "2380:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1013,
                                  "name": "totalCreditorPayment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 999,
                                  "src": "2396:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1011,
                                "name": "setTokenTransferAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1169,
                                "src": "2354:25:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) returns (bool)"
                                }
                              },
                              "id": 1014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2354:63:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1010,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1972,
                              1973
                            ],
                            "referencedDeclaration": 1972,
                            "src": "2346:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 1015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2346:72:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1016,
                        "nodeType": "ExpressionStatement",
                        "src": "2346:72:4"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1019,
                      "name": "totalCreditorPayment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 999,
                      "src": "2504:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1020,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2527:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2504:24:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1035,
                  "nodeType": "IfStatement",
                  "src": "2500:279:4",
                  "trueBody": {
                    "id": 1034,
                    "nodeType": "Block",
                    "src": "2530:249:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1024,
                                  "name": "principalToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 982,
                                  "src": "2609:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1025,
                                    "name": "order",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 917,
                                    "src": "2645:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                                      "typeString": "struct OrderLibrary.DebtOrder memory"
                                    }
                                  },
                                  "id": 1026,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "creditor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1617,
                                  "src": "2645:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1028,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2020,
                                      "src": "2689:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                                        "typeString": "contract NaiveCreditorProxy"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                                        "typeString": "contract NaiveCreditorProxy"
                                      }
                                    ],
                                    "id": 1027,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2681:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 1029,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2681:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1030,
                                  "name": "totalCreditorPayment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 999,
                                  "src": "2716:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1023,
                                "name": "transferTokensFrom",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1259,
                                "src": "2569:18:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,address,uint256) returns (bool)"
                                }
                              },
                              "id": 1031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2569:185:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1022,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1972,
                              1973
                            ],
                            "referencedDeclaration": 1972,
                            "src": "2544:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 1032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2544:224:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1033,
                        "nodeType": "ExpressionStatement",
                        "src": "2544:224:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1036,
                      "name": "agreementId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 920,
                      "src": "2789:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1038,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "2821:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        ],
                        "id": 1037,
                        "name": "sendOrderToKernel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1147,
                        "src": "2803:17:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_DebtOrder_$1644_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (struct OrderLibrary.DebtOrder memory) returns (bytes32)"
                        }
                      },
                      "id": 1039,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2803:24:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2789:38:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1041,
                  "nodeType": "ExpressionStatement",
                  "src": "2789:38:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 1045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1043,
                          "name": "agreementId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 920,
                          "src": "2846:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1044,
                          "name": "NULL_ISSUANCE_HASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 898,
                          "src": "2861:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2846:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1042,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1972,
                        1973
                      ],
                      "referencedDeclaration": 1972,
                      "src": "2838:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2838:42:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1047,
                  "nodeType": "ExpressionStatement",
                  "src": "2838:42:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1048,
                        "name": "debtOfferFilled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 893,
                        "src": "2891:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 1050,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1049,
                        "name": "creditorCommitmentHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 923,
                        "src": "2907:22:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2891:39:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1051,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2933:4:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2891:46:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1053,
                  "nodeType": "ExpressionStatement",
                  "src": "2891:46:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1059,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "2986:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 1060,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1617,
                        "src": "2986:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1062,
                            "name": "agreementId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 920,
                            "src": "3010:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3002:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 1063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3002:20:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1054,
                            "name": "contractRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 903,
                            "src": "2948:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                              "typeString": "contract ContractRegistryInterface"
                            }
                          },
                          "id": 1056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "debtToken",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1333,
                          "src": "2948:26:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DebtTokenInterface_$1518_$",
                            "typeString": "function () view external returns (contract DebtTokenInterface)"
                          }
                        },
                        "id": 1057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2948:28:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DebtTokenInterface_$1518",
                          "typeString": "contract DebtTokenInterface"
                        }
                      },
                      "id": 1058,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1517,
                      "src": "2948:37:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2948:75:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1065,
                  "nodeType": "ExpressionStatement",
                  "src": "2948:75:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1067,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 917,
                          "src": "3055:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 1068,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1617,
                        "src": "3055:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1069,
                        "name": "creditorCommitmentHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 923,
                        "src": "3071:22:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1070,
                        "name": "agreementId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 920,
                        "src": "3095:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1066,
                      "name": "DebtOfferFilled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1304,
                      "src": "3039:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32)"
                      }
                    },
                    "id": 1071,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3039:68:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1072,
                  "nodeType": "EmitStatement",
                  "src": "3034:73:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1073,
                    "name": "agreementId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 920,
                    "src": "3125:11:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 921,
                  "id": 1074,
                  "nodeType": "Return",
                  "src": "3118:18:4"
                }
              ]
            },
            "documentation": null,
            "id": 1076,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "fillDebtOffer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 917,
                  "name": "order",
                  "nodeType": "VariableDeclaration",
                  "scope": 1076,
                  "src": "972:22:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                    "typeString": "struct OrderLibrary.DebtOrder"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 916,
                    "name": "DebtOrder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1644,
                    "src": "972:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DebtOrder_$1644_storage_ptr",
                      "typeString": "struct OrderLibrary.DebtOrder"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "971:24:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 921,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 920,
                  "name": "agreementId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1076,
                  "src": "1012:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 919,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1012:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1011:21:4"
            },
            "scope": 1260,
            "src": "949:2194:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1146,
              "nodeType": "Block",
              "src": "3230:610:4",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1087,
                      "name": "orderAddresses",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3240:32:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$6_memory_ptr",
                        "typeString": "address[6]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1085,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3240:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1086,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "36",
                          "id": 1084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3248:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "6"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3240:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$6_storage_ptr",
                          "typeString": "address[6]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1088,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3240:32:4"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1093,
                      "name": "orderValues",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3282:26:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$8_memory_ptr",
                        "typeString": "uint256[8]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1091,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3282:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1092,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 1090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3287:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "8"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3282:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$8_storage_ptr",
                          "typeString": "uint256[8]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1094,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3282:26:4"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1099,
                      "name": "orderBytes32",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3318:30:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$1_memory_ptr",
                        "typeString": "bytes32[1]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1097,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3318:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1098,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3326:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "1"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3318:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$1_storage_ptr",
                          "typeString": "bytes32[1]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1100,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3318:30:4"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1105,
                      "name": "signaturesV",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3358:27:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint8_$3_memory_ptr",
                        "typeString": "uint8[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1103,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3358:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 1104,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 1102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3364:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3358:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$3_storage_ptr",
                          "typeString": "uint8[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1106,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3358:27:4"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1111,
                      "name": "signaturesR",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3395:29:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                        "typeString": "bytes32[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1109,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3395:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1110,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 1108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3403:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3395:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                          "typeString": "bytes32[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1112,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3395:29:4"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1117,
                      "name": "signaturesS",
                      "nodeType": "VariableDeclaration",
                      "scope": 1147,
                      "src": "3434:29:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                        "typeString": "bytes32[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1115,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3434:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1116,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 1114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3442:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3434:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                          "typeString": "bytes32[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1118,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3434:29:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1129,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1119,
                          "name": "orderAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1087,
                          "src": "3475:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$6_memory_ptr",
                            "typeString": "address[6] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1120,
                          "name": "orderValues",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1093,
                          "src": "3491:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$8_memory_ptr",
                            "typeString": "uint256[8] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1121,
                          "name": "orderBytes32",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1099,
                          "src": "3504:12:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$1_memory_ptr",
                            "typeString": "bytes32[1] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1122,
                          "name": "signaturesV",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1105,
                          "src": "3518:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$3_memory_ptr",
                            "typeString": "uint8[3] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1123,
                          "name": "signaturesR",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1111,
                          "src": "3531:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                            "typeString": "bytes32[3] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1124,
                          "name": "signaturesS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "3544:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                            "typeString": "bytes32[3] memory"
                          }
                        }
                      ],
                      "id": 1125,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "3474:82:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_address_$6_memory_ptr_$_t_array$_t_uint256_$8_memory_ptr_$_t_array$_t_bytes32_$1_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$",
                        "typeString": "tuple(address[6] memory,uint256[8] memory,bytes32[1] memory,uint8[3] memory,bytes32[3] memory,bytes32[3] memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1127,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1078,
                          "src": "3575:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        ],
                        "id": 1126,
                        "name": "unpackDebtOrder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1739,
                        "src": "3559:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_DebtOrder_$1644_memory_ptr_$returns$_t_array$_t_address_$6_memory_ptr_$_t_array$_t_uint256_$8_memory_ptr_$_t_array$_t_bytes32_$1_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$",
                          "typeString": "function (struct OrderLibrary.DebtOrder memory) pure returns (address[6] memory,uint256[8] memory,bytes32[1] memory,uint8[3] memory,bytes32[3] memory,bytes32[3] memory)"
                        }
                      },
                      "id": 1128,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3559:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_address_$6_memory_ptr_$_t_array$_t_uint256_$8_memory_ptr_$_t_array$_t_bytes32_$1_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$",
                        "typeString": "tuple(address[6] memory,uint256[8] memory,bytes32[1] memory,uint8[3] memory,bytes32[3] memory,bytes32[3] memory)"
                      }
                    },
                    "src": "3474:107:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1130,
                  "nodeType": "ExpressionStatement",
                  "src": "3474:107:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1136,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2020,
                            "src": "3664:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                              "typeString": "contract NaiveCreditorProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_NaiveCreditorProxy_$1260",
                              "typeString": "contract NaiveCreditorProxy"
                            }
                          ],
                          "id": 1135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3656:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3656:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1138,
                        "name": "orderAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1087,
                        "src": "3683:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$6_memory_ptr",
                          "typeString": "address[6] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1139,
                        "name": "orderValues",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1093,
                        "src": "3711:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$8_memory_ptr",
                          "typeString": "uint256[8] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1140,
                        "name": "orderBytes32",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1099,
                        "src": "3736:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$1_memory_ptr",
                          "typeString": "bytes32[1] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1141,
                        "name": "signaturesV",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1105,
                        "src": "3762:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$3_memory_ptr",
                          "typeString": "uint8[3] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1142,
                        "name": "signaturesR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1111,
                        "src": "3787:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                          "typeString": "bytes32[3] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1143,
                        "name": "signaturesS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1117,
                        "src": "3812:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                          "typeString": "bytes32[3] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$6_memory_ptr",
                          "typeString": "address[6] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$8_memory_ptr",
                          "typeString": "uint256[8] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$1_memory_ptr",
                          "typeString": "bytes32[1] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint8_$3_memory_ptr",
                          "typeString": "uint8[3] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                          "typeString": "bytes32[3] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                          "typeString": "bytes32[3] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1131,
                            "name": "contractRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 903,
                            "src": "3599:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                              "typeString": "contract ContractRegistryInterface"
                            }
                          },
                          "id": 1132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "debtKernel",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1331,
                          "src": "3599:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DebtKernelInterface_$1507_$",
                            "typeString": "function () view external returns (contract DebtKernelInterface)"
                          }
                        },
                        "id": 1133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3599:29:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DebtKernelInterface_$1507",
                          "typeString": "contract DebtKernelInterface"
                        }
                      },
                      "id": 1134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "fillDebtOrder",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1506,
                      "src": "3599:43:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_address_$6_memory_ptr_$_t_array$_t_uint256_$8_memory_ptr_$_t_array$_t_bytes32_$1_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$_t_array$_t_bytes32_$3_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (address,address[6] memory,uint256[8] memory,bytes32[1] memory,uint8[3] memory,bytes32[3] memory,bytes32[3] memory) external returns (bytes32)"
                      }
                    },
                    "id": 1144,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3599:234:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1082,
                  "id": 1145,
                  "nodeType": "Return",
                  "src": "3592:241:4"
                }
              ]
            },
            "documentation": null,
            "id": 1147,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "sendOrderToKernel",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1079,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1078,
                  "name": "order",
                  "nodeType": "VariableDeclaration",
                  "scope": 1147,
                  "src": "3176:22:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                    "typeString": "struct OrderLibrary.DebtOrder"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1077,
                    "name": "DebtOrder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1644,
                    "src": "3176:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DebtOrder_$1644_storage_ptr",
                      "typeString": "struct OrderLibrary.DebtOrder"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3175:24:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1082,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1081,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1147,
                  "src": "3218:10:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1080,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3218:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3217:12:4"
            },
            "scope": 1260,
            "src": "3149:691:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1168,
              "nodeType": "Block",
              "src": "4095:134:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1161,
                                "name": "contractRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 903,
                                "src": "4154:16:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ContractRegistryInterface_$1372",
                                  "typeString": "contract ContractRegistryInterface"
                                }
                              },
                              "id": 1162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokenTransferProxy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1335,
                              "src": "4154:35:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_TokenTransferProxyInterface_$1595_$",
                                "typeString": "function () view external returns (contract TokenTransferProxyInterface)"
                              }
                            },
                            "id": 1163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4154:37:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenTransferProxyInterface_$1595",
                              "typeString": "contract TokenTransferProxyInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_TokenTransferProxyInterface_$1595",
                              "typeString": "contract TokenTransferProxyInterface"
                            }
                          ],
                          "id": 1160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4146:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4146:46:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1165,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1151,
                        "src": "4206:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1157,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1149,
                            "src": "4118:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1156,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1922,
                          "src": "4112:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$1922_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 1158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4112:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$1922",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 1159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1913,
                      "src": "4112:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 1166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4112:110:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1155,
                  "id": 1167,
                  "nodeType": "Return",
                  "src": "4105:117:4"
                }
              ]
            },
            "documentation": "Helper function for approving this address' allowance to Dharma's token transfer proxy.",
            "id": 1169,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setTokenTransferAllowance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1149,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "4001:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1148,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4001:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1151,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "4024:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1150,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4024:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3991:50:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1154,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "4076:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1153,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4076:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4075:15:4"
            },
            "scope": 1260,
            "src": "3957:272:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1191,
              "nodeType": "Block",
              "src": "4514:170:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1187,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1173,
                        "src": "4641:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1188,
                        "name": "granter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1175,
                        "src": "4660:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1185,
                          "name": "EXTERNAL_QUERY_GAS_LIMIT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 901,
                          "src": "4602:24:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1181,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1171,
                                "src": "4581:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1180,
                              "name": "ERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1922,
                              "src": "4575:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20_$1922_$",
                                "typeString": "type(contract ERC20)"
                              }
                            },
                            "id": 1182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4575:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$1922",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 1183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "allowance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1893,
                          "src": "4575:22:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address,address) view external returns (uint256)"
                          }
                        },
                        "id": 1184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "gas",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4575:26:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_setgas_nonpayable$_t_uint256_$returns$_t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$gas_$",
                          "typeString": "function (uint256) returns (function (address,address) view external returns (uint256))"
                        }
                      },
                      "id": 1186,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4575:52:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$gas",
                        "typeString": "function (address,address) view external returns (uint256)"
                      }
                    },
                    "id": 1189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4575:102:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1179,
                  "id": 1190,
                  "nodeType": "Return",
                  "src": "4568:109:4"
                }
              ]
            },
            "documentation": "Helper function for querying this contract's allowance for transferring the given token.",
            "id": 1192,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getAllowance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1176,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1171,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 1192,
                  "src": "4378:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1170,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4378:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1173,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1192,
                  "src": "4401:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1172,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4401:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1175,
                  "name": "granter",
                  "nodeType": "VariableDeclaration",
                  "scope": 1192,
                  "src": "4424:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1174,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4424:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4368:77:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1178,
                  "name": "_allowance",
                  "nodeType": "VariableDeclaration",
                  "scope": 1192,
                  "src": "4493:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1177,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4493:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4492:17:4"
            },
            "scope": 1260,
            "src": "4347:337:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1235,
              "nodeType": "Block",
              "src": "4775:506:4",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1199,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1969,
                        "src": "4829:3:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1200,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4829:10:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1201,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1194,
                        "src": "4843:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder memory"
                        }
                      },
                      "id": 1202,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "creditor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1617,
                      "src": "4843:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4829:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1207,
                  "nodeType": "IfStatement",
                  "src": "4825:71:4",
                  "trueBody": {
                    "id": 1206,
                    "nodeType": "Block",
                    "src": "4859:37:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 1204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4880:5:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 1198,
                        "id": 1205,
                        "nodeType": "Return",
                        "src": "4873:12:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1209
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1209,
                      "name": "creditorCommitmentHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1236,
                      "src": "4906:30:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1208,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4906:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1213,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1211,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1194,
                        "src": "4970:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder memory"
                        }
                      ],
                      "id": 1210,
                      "name": "hashCreditorCommitmentForOrder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 499,
                      "src": "4939:30:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_DebtOrder_$1644_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct OrderLibrary.DebtOrder memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4939:37:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4906:70:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1214,
                      "name": "debtOfferFilled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 893,
                      "src": "5041:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                        "typeString": "mapping(bytes32 => bool)"
                      }
                    },
                    "id": 1216,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1215,
                      "name": "creditorCommitmentHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1209,
                      "src": "5057:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5041:39:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1220,
                  "nodeType": "IfStatement",
                  "src": "5037:82:4",
                  "trueBody": {
                    "id": 1219,
                    "nodeType": "Block",
                    "src": "5082:37:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 1217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5103:5:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 1198,
                        "id": 1218,
                        "nodeType": "Return",
                        "src": "5096:12:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1221,
                        "name": "debtOfferCancelled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 889,
                        "src": "5129:18:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 1223,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1222,
                        "name": "creditorCommitmentHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1209,
                        "src": "5148:22:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5129:42:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5174:4:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "5129:49:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1226,
                  "nodeType": "ExpressionStatement",
                  "src": "5129:49:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1228,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1194,
                          "src": "5213:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 1229,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1617,
                        "src": "5213:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1230,
                        "name": "creditorCommitmentHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1209,
                        "src": "5229:22:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1227,
                      "name": "DebtOfferCancelled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1296,
                      "src": "5194:18:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 1231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5194:58:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1232,
                  "nodeType": "EmitStatement",
                  "src": "5189:63:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 1233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5270:4:4",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 1198,
                  "id": 1234,
                  "nodeType": "Return",
                  "src": "5263:11:4"
                }
              ]
            },
            "documentation": null,
            "id": 1236,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "cancelDebtOffer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1195,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1194,
                  "name": "order",
                  "nodeType": "VariableDeclaration",
                  "scope": 1236,
                  "src": "4715:22:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DebtOrder_$1644_memory_ptr",
                    "typeString": "struct OrderLibrary.DebtOrder"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1193,
                    "name": "DebtOrder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1644,
                    "src": "4715:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DebtOrder_$1644_storage_ptr",
                      "typeString": "struct OrderLibrary.DebtOrder"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4714:24:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1197,
                  "name": "succeeded",
                  "nodeType": "VariableDeclaration",
                  "scope": 1236,
                  "src": "4755:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1196,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4755:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4754:16:4"
            },
            "scope": 1260,
            "src": "4690:591:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1258,
              "nodeType": "Block",
              "src": "5570:71:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1253,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1240,
                        "src": "5614:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1254,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "5621:3:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1255,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1244,
                        "src": "5626:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1250,
                            "name": "_token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1238,
                            "src": "5593:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1249,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1922,
                          "src": "5587:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$1922_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 1251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5587:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$1922",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 1252,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1904,
                      "src": "5587:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256) external returns (bool)"
                      }
                    },
                    "id": 1256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5587:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1248,
                  "id": 1257,
                  "nodeType": "Return",
                  "src": "5580:54:4"
                }
              ]
            },
            "documentation": "Helper function for transferring a specified amount of tokens between two parties.",
            "id": 1259,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transferTokensFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1238,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 1259,
                  "src": "5430:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1237,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5430:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1240,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 1259,
                  "src": "5454:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1239,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5454:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1242,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 1259,
                  "src": "5477:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1241,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5477:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1244,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1259,
                  "src": "5498:12:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1243,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5498:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5420:96:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1248,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1247,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 1259,
                  "src": "5551:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1246,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5551:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5550:15:4"
            },
            "scope": 1260,
            "src": "5393:248:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 1261,
        "src": "393:5250:4"
      }
    ],
    "src": "0:5644:4"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {
    "70": {
      "events": {},
      "links": {},
      "address": "0xc3017bc965a905b7ef5cc42411214ac02013a27a",
      "transactionHash": "0x5a3cab90ac46ff4937e27307a6f2a64e1102914e002efba1befd5d103aa45c2c"
    }
  },
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-16T21:21:04.740Z"
}