{
  "contractName": "Payment",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "startDate",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signatureId",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CLAUSE_EVENT_TYPE",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "userContract",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "receiversArray",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "documentId",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "contractId",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "endDate",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signatureContract",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "notifiersKey",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CREATION_EVENT_TYPE",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "period",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signaturit",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "userContractAddress",
          "type": "address"
        },
        {
          "name": "signatureContractAddress",
          "type": "address"
        },
        {
          "name": "id",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "signature",
          "type": "string"
        },
        {
          "name": "document",
          "type": "string"
        },
        {
          "name": "start",
          "type": "uint256"
        },
        {
          "name": "end",
          "type": "uint256"
        },
        {
          "name": "paymentPeriod",
          "type": "uint256"
        }
      ],
      "name": "init",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "id",
          "type": "string"
        }
      ],
      "name": "setReceiver",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "receiverId",
          "type": "string"
        },
        {
          "name": "referenceId",
          "type": "string"
        },
        {
          "name": "referenceValue",
          "type": "string"
        },
        {
          "name": "referencePrice",
          "type": "uint256"
        }
      ],
      "name": "setReference",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "receiverId",
          "type": "string"
        },
        {
          "name": "referenceId",
          "type": "string"
        },
        {
          "name": "paymentCheckId",
          "type": "string"
        },
        {
          "name": "status",
          "type": "uint256"
        },
        {
          "name": "checkedAt",
          "type": "uint256"
        },
        {
          "name": "createdAt",
          "type": "uint256"
        }
      ],
      "name": "addPaymentCheck",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getReceiversSize",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "paymentCheckId",
          "type": "string"
        }
      ],
      "name": "getPaymentCheckById",
      "outputs": [
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "status",
          "type": "uint256"
        },
        {
          "name": "checkedAt",
          "type": "uint256"
        },
        {
          "name": "createdAt",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "referenceId",
          "type": "string"
        }
      ],
      "name": "getLastPaymentCheckFromReference",
      "outputs": [
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "status",
          "type": "uint256"
        },
        {
          "name": "checkedAt",
          "type": "uint256"
        },
        {
          "name": "createdAt",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "referenceId",
          "type": "string"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getPaymentCheckFromReference",
      "outputs": [
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "status",
          "type": "uint256"
        },
        {
          "name": "checkedAt",
          "type": "uint256"
        },
        {
          "name": "createdAt",
          "type": "uint256"
        },
        {
          "name": "more",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "referenceId",
          "type": "string"
        }
      ],
      "name": "getPaymentCheckSizeFromReference",
      "outputs": [
        {
          "name": "size",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "referenceId",
          "type": "string"
        }
      ],
      "name": "getReferenceById",
      "outputs": [
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "value",
          "type": "string"
        },
        {
          "name": "price",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "receiverId",
          "type": "string"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getReferenceFromReceiver",
      "outputs": [
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "value",
          "type": "string"
        },
        {
          "name": "price",
          "type": "uint256"
        },
        {
          "name": "more",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "receiverId",
          "type": "string"
        }
      ],
      "name": "getReferenceSizeFromReceiver",
      "outputs": [
        {
          "name": "size",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getReceiverId",
      "outputs": [
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "more",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200331c3803806200331c833981018060405260608110156200003757600080fd5b81516020830151604084018051929491938201926401000000008111156200005e57600080fd5b820160208101848111156200007257600080fd5b81516401000000008111828201871017156200008d57600080fd5b50506040805180820190915260188082527f7061796d656e742d636c617573652d6e6f74696669657273000000000000000060208301908152929550909350620000dc92506000919062000132565b50508051620000f390600890602084019062000132565b505060078054600160a060020a0319908116331790915560058054600160a060020a0394851690831617905560068054929093169116179055620001d7565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017557805160ff1916838001178555620001a5565b82800160010185558215620001a5579182015b82811115620001a557825182559160200191906001019062000188565b50620001b3929150620001b7565b5090565b620001d491905b80821115620001b35760008155600101620001be565b90565b61313580620001e76000396000f3fe60806040526004361061013a5763ffffffff60e060020a6000350416630b97bc86811461013f57806313820f19146101665780631c9a05ec14610217578063395ba050146102c45780634396fd121461034e5780635000596b14610363578063605b460914610394578063680488e2146103be578063683f4fc5146105865780636b7eab381461059b57806374452c901461064c57806378f7c83f1461078a5780638291286c1461079f578063881c2cc0146107b4578063b610f10f14610971578063bfbcafd414610ab2578063c24a0f8b14610c51578063c7e3bb0214610c66578063d83070ab14610d17578063d9026ed114610d2c578063dea8444414610d41578063e2ec46e114610d56578063ef78d4fd14610e61578063f405f28014610e76578063f9b5333514610f27578063fc2e2c2814610f3c575b600080fd5b34801561014b57600080fd5b50610154611093565b60408051918252519081900360200190f35b34801561017257600080fd5b506101546004803603602081101561018957600080fd5b810190602081018135602060020a8111156101a357600080fd5b8201836020820111156101b557600080fd5b803590602001918460018302840111602060020a831117156101d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611099945050505050565b34801561022357600080fd5b506102416004803603602081101561023a57600080fd5b503561110d565b604051808060200183151515158152602001828103825284818151815260200191508051906020019080838360005b83811015610288578181015183820152602001610270565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156102d057600080fd5b506102d9611227565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103135781810151838201526020016102fb565b50505050905090810190601f1680156103405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035a57600080fd5b506102d96112b5565b34801561036f57600080fd5b506103786112e5565b60408051600160a060020a039092168252519081900360200190f35b3480156103a057600080fd5b506102d9600480360360208110156103b757600080fd5b50356112f4565b3480156103ca57600080fd5b50610584600480360360c08110156103e157600080fd5b810190602081018135602060020a8111156103fb57600080fd5b82018360208201111561040d57600080fd5b803590602001918460018302840111602060020a8311171561042e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561048057600080fd5b82018360208201111561049257600080fd5b803590602001918460018302840111602060020a831117156104b357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561050557600080fd5b82018360208201111561051757600080fd5b803590602001918460018302840111602060020a8311171561053857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060400135611368565b005b34801561059257600080fd5b50610154611506565b3480156105a757600080fd5b50610154600480360360208110156105be57600080fd5b810190602081018135602060020a8111156105d857600080fd5b8201836020820111156105ea57600080fd5b803590602001918460018302840111602060020a8311171561060b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061150d945050505050565b34801561065857600080fd5b506106fd6004803603602081101561066f57600080fd5b810190602081018135602060020a81111561068957600080fd5b82018360208201111561069b57600080fd5b803590602001918460018302840111602060020a831117156106bc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611581945050505050565b6040518080602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561074c578181015183820152602001610734565b50505050905090810190601f1680156107795780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561079657600080fd5b506102d96117bd565b3480156107ab57600080fd5b506102d9611818565b3480156107c057600080fd5b50610584600480360360808110156107d757600080fd5b810190602081018135602060020a8111156107f157600080fd5b82018360208201111561080357600080fd5b803590602001918460018302840111602060020a8311171561082457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561087657600080fd5b82018360208201111561088857600080fd5b803590602001918460018302840111602060020a831117156108a957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156108fb57600080fd5b82018360208201111561090d57600080fd5b803590602001918460018302840111602060020a8311171561092e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611873915050565b34801561097d57600080fd5b50610584600480360360a081101561099457600080fd5b810190602081018135602060020a8111156109ae57600080fd5b8201836020820111156109c057600080fd5b803590602001918460018302840111602060020a831117156109e157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610a3357600080fd5b820183602082011115610a4557600080fd5b803590602001918460018302840111602060020a83111715610a6657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013561191f565b348015610abe57600080fd5b50610b6560048036036040811015610ad557600080fd5b810190602081018135602060020a811115610aef57600080fd5b820183602082011115610b0157600080fd5b803590602001918460018302840111602060020a83111715610b2257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611a02915050565b60408051908101839052811515606082015260808082528551908201528451819060208083019160a084019189019080838360005b83811015610bb2578181015183820152602001610b9a565b50505050905090810190601f168015610bdf5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610c12578181015183820152602001610bfa565b50505050905090810190601f168015610c3f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b348015610c5d57600080fd5b50610154611c62565b348015610c7257600080fd5b506106fd60048036036020811015610c8957600080fd5b810190602081018135602060020a811115610ca357600080fd5b820183602082011115610cb557600080fd5b803590602001918460018302840111602060020a83111715610cd657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c68945050505050565b348015610d2357600080fd5b50610378611ed6565b348015610d3857600080fd5b506102d9611ee5565b348015610d4d57600080fd5b506102d9611f40565b348015610d6257600080fd5b50610e0960048036036040811015610d7957600080fd5b810190602081018135602060020a811115610d9357600080fd5b820183602082011115610da557600080fd5b803590602001918460018302840111602060020a83111715610dc657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611f73915050565b6040518080602001868152602001858152602001848152602001831515151581526020018281038252878181518152602001915080519060200190808383600083811015610c12578181015183820152602001610bfa565b348015610e6d57600080fd5b506101546121a5565b348015610e8257600080fd5b5061058460048036036020811015610e9957600080fd5b810190602081018135602060020a811115610eb357600080fd5b820183602082011115610ec557600080fd5b803590602001918460018302840111602060020a83111715610ee657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121ab945050505050565b348015610f3357600080fd5b50610378612223565b348015610f4857600080fd5b50610fed60048036036020811015610f5f57600080fd5b810190602081018135602060020a811115610f7957600080fd5b820183602082011115610f8b57600080fd5b803590602001918460018302840111602060020a83111715610fac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612232945050505050565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561103457818101518382015260200161101c565b50505050905090810190601f1680156110615780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360008381101561074c578181015183820152602001610734565b600c5481565b60006110a482612496565b600f826040518082805190602001908083835b602083106110d65780518252601f1990920191602091820191016110b7565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060010154949350505050565b600b546060906000908310611162576040805160e560020a62461bcd0281526020600482015260106024820152608360020a6f09eeccae4ccd8deeecac840d2dcc8caf02604482015290519081900360640190fd5b600b54600090600185011015611176575060015b600b80548590811061118457fe5b60009182526020918290200180546040805160026001841615610100026000190190931692909204601f81018590048502830185019091528082529192849284918301828280156112165780601f106111eb57610100808354040283529160200191611216565b820191906000526020600020905b8154815290600101906020018083116111f957829003601f168201915b505050505091509250925050915091565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112ad5780601f10611282576101008083540402835291602001916112ad565b820191906000526020600020905b81548152906001019060200180831161129057829003601f168201915b505050505081565b6040805180820190915260138152606a60020a721c185e5b595b9d17d8da1958dacb985919195902602082015281565b600554600160a060020a031681565b600b80548290811061130257fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156112ad5780601f10611282576101008083540402835291602001916112ad565b600754600160a060020a031633146113d3576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206130ea8339815191526044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60006113df8787612570565b9050608060405190810160405280868152602001858152602001848152602001838152506011866040518082805190602001908083835b602083106114355780518252601f199092019160209182019101611416565b51815160209384036101000a600019018019909216911617905292019485525060405193849003810190932084518051919461147694508593500190612f71565b50602082810151600180840191909155604084015160028401556060909301516003928301559083018054928301808255600091825290829020885191936114c49391019190890190612f71565b50506114fd604080519081016040528060138152602001606a60020a721c185e5b595b9d17d8da1958dacb9859191959028152506127e0565b50505050505050565b600b545b90565b600061151882612a4f565b6010826040518082805190602001908083835b6020831061154a5780518252601f19909201916020918201910161152b565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030154949350505050565b6060600080600061159185612b26565b6011856040518082805190602001908083835b602083106115c35780518252601f1990920191602091820191016115a4565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101842089519094601194508a9350918291908401908083835b602083106116235780518252601f199092019160209182019101611604565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381018420600101548a519094601194508b9350918291908401908083835b602083106116875780518252601f199092019160209182019101611668565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381018420600201548b519094601194508c9350918291908401908083835b602083106116eb5780518252601f1990920191602091820191016116cc565b518151600019602094850361010090810a82019283169219939093169190911790925294909201968752604080519788900382018820600301548b54601f6002600183161590980290950116959095049283018290048202880182019052818752929594508893509184019050828280156117a75780601f1061177c576101008083540402835291602001916117a7565b820191906000526020600020905b81548152906001019060200180831161178a57829003601f168201915b5050505050935093509350935093509193509193565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112ad5780601f10611282576101008083540402835291602001916112ad565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112ad5780601f10611282576101008083540402835291602001916112ad565b600754600160a060020a031633146118de576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206130ea8339815191526044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60006118ea8585612570565b84519091506118ff9082906020870190612f71565b5082516119159060018301906020860190612f71565b5060020155505050565b600754600160a060020a0316331461198a576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206130ea8339815191526044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b600d829055600c83905583516119a790600a906020870190612f71565b50600e81905584516119c0906009906020880190612f71565b506119fb604080519081016040528060168152602001605260020a751c185e5b595b9d17d8db185d5cd94b98dc99585d195902815250612beb565b5050505050565b606080600080611a1186612496565b600f866040518082805190602001908083835b60208310611a435780518252601f199092019160209182019101611a24565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092206001015487109150611ac29050576040805160e560020a62461bcd0281526020600482015260106024820152608360020a6f09eeccae4ccd8deeecac840d2dcc8caf02604482015290519081900360640190fd5b600080905085600101600f886040518082805190602001908083835b60208310611afd5780518252601f199092019160209182019101611ade565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092206001015492909211159150611b3d9050575060015b6060806000611c4d600f8b6040518082805190602001908083835b60208310611b775780518252601f199092019160209182019101611b58565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060010180549092508c91508110611bb557fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611c435780601f10611c1857610100808354040283529160200191611c43565b820191906000526020600020905b815481529060010190602001808311611c2657829003601f168201915b5050505050612232565b919c909b509099509397509295505050505050565b600d5481565b60606000806000611ce38560016010886040518082805190602001908083835b60208310611ca75780518252601f199092019160209182019101611c88565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030154929092039150612cb79050565b611ec760116010876040518082805190602001908083835b60208310611d1a5780518252601f199092019160209182019101611cfb565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160016010896040518082805190602001908083835b60208310611d845780518252601f199092019160209182019101611d65565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092206003015484549390039283109150611dc5905057fe5b906000526020600020016040518082805460018160011615610100020316600290048015611e2a5780601f10611e08576101008083540402835291820191611e2a565b820191906000526020600020905b815481529060010190602001808311611e16575b505092835250506040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015611ebd5780601f10611e9257610100808354040283529160200191611ebd565b820191906000526020600020905b815481529060010190602001808311611ea057829003601f168201915b5050505050611581565b93509350935093509193509193565b600654600160a060020a031681565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112ad5780601f10611282576101008083540402835291602001916112ad565b6040805180820190915260168152605260020a751c185e5b595b9d17d8db185d5cd94b98dc99585d195902602082015281565b6060600080600080611f8487612a4f565b6010876040518082805190602001908083835b60208310611fb65780518252601f199092019160209182019101611f97565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030154881091506120359050576040805160e560020a62461bcd0281526020600482015260106024820152608360020a6f09eeccae4ccd8deeecac840d2dcc8caf02604482015290519081900360640190fd5b6000809050866001016010896040518082805190602001908083835b602083106120705780518252601f199092019160209182019101612051565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030154929092111591506120b09050575060015b6060600080600061218d60108d6040518082805190602001908083835b602083106120ec5780518252601f1990920191602091820191016120cd565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030180549092508e9150811061212a57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611ebd5780601f10611e9257610100808354040283529160200191611ebd565b929f919e509c50909a50949850939650505050505050565b600e5481565b600754600160a060020a03163314612216576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206130ea8339815191526044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b61221f81612d93565b5050565b600754600160a060020a031681565b606080600061224084612a4f565b6010846040518082805190602001908083835b602083106122725780518252601f199092019160209182019101612253565b51815160209384036101000a600019018019909216911617905292019485525060405193849003810184208851909460109450899350918291908401908083835b602083106122d25780518252601f1990920191602091820191016122b3565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001016010866040518082805190602001908083835b6020831061233a5780518252601f19909201916020918201910161231b565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188206002908101548b54601f60018216159098029095019094160494850182900482028801820190528387529095945087935084019050828280156123f45780601f106123c9576101008083540402835291602001916123f4565b820191906000526020600020905b8154815290600101906020018083116123d757829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959850879450925084019050828280156124825780601f1061245757610100808354040283529160200191612482565b820191906000526020600020905b81548152906001019060200180831161246557829003601f168201915b505050505091509250925092509193909250565b600f816040518082805190602001908083835b602083106124c85780518252601f1990920191602091820191016124a9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000180546001816001161561010002031660029004905060001415151561256d576040805160e560020a62461bcd02815260206004820152601b60248201527f5468697320726563656976657220646f65736e27742065786973740000000000604482015290519081900360640190fd5b50565b600061257b83612d93565b506010826040518082805190602001908083835b602083106125ae5780518252601f19909201916020918201910161258f565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000018054600181600116156101000203166002900490506000141561277a5760606080604051908101604052808481526020016020604051908101604052806000815250815260200160008152602001828152506010846040518082805190602001908083835b602083106126685780518252601f199092019160209182019101612649565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381019093208451805191946126a994508593500190612f71565b5060208281015180516126c29260018501920190612f71565b5060408201516002820155606082015180516126e8916003840191602090910190612fef565b50905050600f846040518082805190602001908083835b6020831061271e5780518252601f1990920191602091820191016126ff565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101909320600190810180549182018082556000918252908590208851919561277695509201925090870190612f71565b5050505b6010826040518082805190602001908083835b602083106127ac5780518252601f19909201916020918201910161278d565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922095945050505050565b6000805b6005546040805160e260020a633ce8989d0281526024810184905260048101918252600080546002600019600183161561010002019091160460448301819052600160a060020a039094169363f3a26274939192869291829160640190859080156128905780601f1061286557610100808354040283529160200191612890565b820191906000526020600020905b81548152906001019060200180831161287357829003601f168201915b5050935050505060206040518083038186803b1580156128af57600080fd5b505afa1580156128c3573d6000803e3d6000fd5b505050506040513d60208110156128d957600080fd5b50519150600101600160a060020a03821615612a3a5760408051306044820181905260248201928352855160648301528551600160a060020a0386169387939091829160840190602086019080838360005b8381101561294357818101518382015260200161292b565b50505050905090810190601f1680156129705780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63738f32bb0217815290518251929650945084935091508083835b602083106129cf5780518252601f1990920191602091820191016129b0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612a31576040519150601f19603f3d011682016040523d82523d6000602084013e612a36565b606091505b5050505b600160a060020a03821615156127e457505050565b6010816040518082805190602001908083835b60208310612a815780518252601f199092019160209182019101612a62565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000180546001816001161561010002031660029004905060001415151561256d576040805160e560020a62461bcd02815260206004820152601c60248201527f54686973207265666572656e636520646f65736e277420657869737400000000604482015290519081900360640190fd5b6011816040518082805190602001908083835b60208310612b585780518252601f199092019160209182019101612b39565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000180546001816001161561010002031660029004905060001415151561256d576040805160e560020a62461bcd02815260206004820181905260248201526000805160206130ca833981519152604482015290519081900360640190fd5b6006546040805160e160020a63738f32bb028152306024820181905260048201928352845160448301528451600160a060020a039094169363e71e65769386939091829160640190602086019080838360005b83811015612c56578181015183820152602001612c3e565b50505050905090810190601f168015612c835780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612ca357600080fd5b505af11580156119fb573d6000803e3d6000fd5b612cc082612a4f565b6010826040518082805190602001908083835b60208310612cf25780518252601f199092019160209182019101612cd3565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030180549092508391508110612d3057fe5b60009182526020909120015460026000196101006001841615020190911604151561221f576040805160e560020a62461bcd02815260206004820181905260248201526000805160206130ca833981519152604482015290519081900360640190fd5b6000600f826040518082805190602001908083835b60208310612dc75780518252601f199092019160209182019101612da8565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000180546001816001161561010002031660029004905060001415612f0c576060604080519081016040528084815260200182815250600f846040518082805190602001908083835b60208310612e635780518252601f199092019160209182019101612e44565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101909320845180519194612ea494508593500190612f71565b506020828101518051612ebd9260018501920190612fef565b5050600b8054600181018083556000929092528551919250612f08917f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9909101906020870190612f71565b5050505b600f826040518082805190602001908083835b60208310612f3e5780518252601f199092019160209182019101612f1f565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612fb257805160ff1916838001178555612fdf565b82800160010185558215612fdf579182015b82811115612fdf578251825591602001919060010190612fc4565b50612feb929150613048565b5090565b82805482825590600052602060002090810192821561303c579160200282015b8281111561303c578251805161302c918491602090910190612f71565b509160200191906001019061300f565b50612feb929150613062565b61150a91905b80821115612feb576000815560010161304e565b61150a91905b80821115612feb57600061307c8282613085565b50600101613068565b50805460018160011615610100020316600290046000825580601f106130ab575061256d565b601f01602090049060005260206000209081019061256d919061304856fe54686973207061796d656e7420636865636b20646f65736e27742065786973744f6e6c79205369676e617475726974206163636f756e742063616e2070657266a165627a7a72305820c1e69bbc98edc62626a9ee6af15efad3ab7f2103961a69056ab8ad8f8cedb7e60029",
  "deployedBytecode": "0x60806040526004361061013a5763ffffffff60e060020a6000350416630b97bc86811461013f57806313820f19146101665780631c9a05ec14610217578063395ba050146102c45780634396fd121461034e5780635000596b14610363578063605b460914610394578063680488e2146103be578063683f4fc5146105865780636b7eab381461059b57806374452c901461064c57806378f7c83f1461078a5780638291286c1461079f578063881c2cc0146107b4578063b610f10f14610971578063bfbcafd414610ab2578063c24a0f8b14610c51578063c7e3bb0214610c66578063d83070ab14610d17578063d9026ed114610d2c578063dea8444414610d41578063e2ec46e114610d56578063ef78d4fd14610e61578063f405f28014610e76578063f9b5333514610f27578063fc2e2c2814610f3c575b600080fd5b34801561014b57600080fd5b50610154611093565b60408051918252519081900360200190f35b34801561017257600080fd5b506101546004803603602081101561018957600080fd5b810190602081018135602060020a8111156101a357600080fd5b8201836020820111156101b557600080fd5b803590602001918460018302840111602060020a831117156101d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611099945050505050565b34801561022357600080fd5b506102416004803603602081101561023a57600080fd5b503561110d565b604051808060200183151515158152602001828103825284818151815260200191508051906020019080838360005b83811015610288578181015183820152602001610270565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156102d057600080fd5b506102d9611227565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103135781810151838201526020016102fb565b50505050905090810190601f1680156103405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035a57600080fd5b506102d96112b5565b34801561036f57600080fd5b506103786112e5565b60408051600160a060020a039092168252519081900360200190f35b3480156103a057600080fd5b506102d9600480360360208110156103b757600080fd5b50356112f4565b3480156103ca57600080fd5b50610584600480360360c08110156103e157600080fd5b810190602081018135602060020a8111156103fb57600080fd5b82018360208201111561040d57600080fd5b803590602001918460018302840111602060020a8311171561042e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561048057600080fd5b82018360208201111561049257600080fd5b803590602001918460018302840111602060020a831117156104b357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561050557600080fd5b82018360208201111561051757600080fd5b803590602001918460018302840111602060020a8311171561053857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060400135611368565b005b34801561059257600080fd5b50610154611506565b3480156105a757600080fd5b50610154600480360360208110156105be57600080fd5b810190602081018135602060020a8111156105d857600080fd5b8201836020820111156105ea57600080fd5b803590602001918460018302840111602060020a8311171561060b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061150d945050505050565b34801561065857600080fd5b506106fd6004803603602081101561066f57600080fd5b810190602081018135602060020a81111561068957600080fd5b82018360208201111561069b57600080fd5b803590602001918460018302840111602060020a831117156106bc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611581945050505050565b6040518080602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561074c578181015183820152602001610734565b50505050905090810190601f1680156107795780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561079657600080fd5b506102d96117bd565b3480156107ab57600080fd5b506102d9611818565b3480156107c057600080fd5b50610584600480360360808110156107d757600080fd5b810190602081018135602060020a8111156107f157600080fd5b82018360208201111561080357600080fd5b803590602001918460018302840111602060020a8311171561082457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561087657600080fd5b82018360208201111561088857600080fd5b803590602001918460018302840111602060020a831117156108a957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156108fb57600080fd5b82018360208201111561090d57600080fd5b803590602001918460018302840111602060020a8311171561092e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611873915050565b34801561097d57600080fd5b50610584600480360360a081101561099457600080fd5b810190602081018135602060020a8111156109ae57600080fd5b8201836020820111156109c057600080fd5b803590602001918460018302840111602060020a831117156109e157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610a3357600080fd5b820183602082011115610a4557600080fd5b803590602001918460018302840111602060020a83111715610a6657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013561191f565b348015610abe57600080fd5b50610b6560048036036040811015610ad557600080fd5b810190602081018135602060020a811115610aef57600080fd5b820183602082011115610b0157600080fd5b803590602001918460018302840111602060020a83111715610b2257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611a02915050565b60408051908101839052811515606082015260808082528551908201528451819060208083019160a084019189019080838360005b83811015610bb2578181015183820152602001610b9a565b50505050905090810190601f168015610bdf5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610c12578181015183820152602001610bfa565b50505050905090810190601f168015610c3f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b348015610c5d57600080fd5b50610154611c62565b348015610c7257600080fd5b506106fd60048036036020811015610c8957600080fd5b810190602081018135602060020a811115610ca357600080fd5b820183602082011115610cb557600080fd5b803590602001918460018302840111602060020a83111715610cd657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c68945050505050565b348015610d2357600080fd5b50610378611ed6565b348015610d3857600080fd5b506102d9611ee5565b348015610d4d57600080fd5b506102d9611f40565b348015610d6257600080fd5b50610e0960048036036040811015610d7957600080fd5b810190602081018135602060020a811115610d9357600080fd5b820183602082011115610da557600080fd5b803590602001918460018302840111602060020a83111715610dc657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611f73915050565b6040518080602001868152602001858152602001848152602001831515151581526020018281038252878181518152602001915080519060200190808383600083811015610c12578181015183820152602001610bfa565b348015610e6d57600080fd5b506101546121a5565b348015610e8257600080fd5b5061058460048036036020811015610e9957600080fd5b810190602081018135602060020a811115610eb357600080fd5b820183602082011115610ec557600080fd5b803590602001918460018302840111602060020a83111715610ee657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121ab945050505050565b348015610f3357600080fd5b50610378612223565b348015610f4857600080fd5b50610fed60048036036020811015610f5f57600080fd5b810190602081018135602060020a811115610f7957600080fd5b820183602082011115610f8b57600080fd5b803590602001918460018302840111602060020a83111715610fac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612232945050505050565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561103457818101518382015260200161101c565b50505050905090810190601f1680156110615780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360008381101561074c578181015183820152602001610734565b600c5481565b60006110a482612496565b600f826040518082805190602001908083835b602083106110d65780518252601f1990920191602091820191016110b7565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060010154949350505050565b600b546060906000908310611162576040805160e560020a62461bcd0281526020600482015260106024820152608360020a6f09eeccae4ccd8deeecac840d2dcc8caf02604482015290519081900360640190fd5b600b54600090600185011015611176575060015b600b80548590811061118457fe5b60009182526020918290200180546040805160026001841615610100026000190190931692909204601f81018590048502830185019091528082529192849284918301828280156112165780601f106111eb57610100808354040283529160200191611216565b820191906000526020600020905b8154815290600101906020018083116111f957829003601f168201915b505050505091509250925050915091565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112ad5780601f10611282576101008083540402835291602001916112ad565b820191906000526020600020905b81548152906001019060200180831161129057829003601f168201915b505050505081565b6040805180820190915260138152606a60020a721c185e5b595b9d17d8da1958dacb985919195902602082015281565b600554600160a060020a031681565b600b80548290811061130257fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156112ad5780601f10611282576101008083540402835291602001916112ad565b600754600160a060020a031633146113d3576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206130ea8339815191526044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60006113df8787612570565b9050608060405190810160405280868152602001858152602001848152602001838152506011866040518082805190602001908083835b602083106114355780518252601f199092019160209182019101611416565b51815160209384036101000a600019018019909216911617905292019485525060405193849003810190932084518051919461147694508593500190612f71565b50602082810151600180840191909155604084015160028401556060909301516003928301559083018054928301808255600091825290829020885191936114c49391019190890190612f71565b50506114fd604080519081016040528060138152602001606a60020a721c185e5b595b9d17d8da1958dacb9859191959028152506127e0565b50505050505050565b600b545b90565b600061151882612a4f565b6010826040518082805190602001908083835b6020831061154a5780518252601f19909201916020918201910161152b565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030154949350505050565b6060600080600061159185612b26565b6011856040518082805190602001908083835b602083106115c35780518252601f1990920191602091820191016115a4565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101842089519094601194508a9350918291908401908083835b602083106116235780518252601f199092019160209182019101611604565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381018420600101548a519094601194508b9350918291908401908083835b602083106116875780518252601f199092019160209182019101611668565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381018420600201548b519094601194508c9350918291908401908083835b602083106116eb5780518252601f1990920191602091820191016116cc565b518151600019602094850361010090810a82019283169219939093169190911790925294909201968752604080519788900382018820600301548b54601f6002600183161590980290950116959095049283018290048202880182019052818752929594508893509184019050828280156117a75780601f1061177c576101008083540402835291602001916117a7565b820191906000526020600020905b81548152906001019060200180831161178a57829003601f168201915b5050505050935093509350935093509193509193565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112ad5780601f10611282576101008083540402835291602001916112ad565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112ad5780601f10611282576101008083540402835291602001916112ad565b600754600160a060020a031633146118de576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206130ea8339815191526044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60006118ea8585612570565b84519091506118ff9082906020870190612f71565b5082516119159060018301906020860190612f71565b5060020155505050565b600754600160a060020a0316331461198a576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206130ea8339815191526044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b600d829055600c83905583516119a790600a906020870190612f71565b50600e81905584516119c0906009906020880190612f71565b506119fb604080519081016040528060168152602001605260020a751c185e5b595b9d17d8db185d5cd94b98dc99585d195902815250612beb565b5050505050565b606080600080611a1186612496565b600f866040518082805190602001908083835b60208310611a435780518252601f199092019160209182019101611a24565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092206001015487109150611ac29050576040805160e560020a62461bcd0281526020600482015260106024820152608360020a6f09eeccae4ccd8deeecac840d2dcc8caf02604482015290519081900360640190fd5b600080905085600101600f886040518082805190602001908083835b60208310611afd5780518252601f199092019160209182019101611ade565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092206001015492909211159150611b3d9050575060015b6060806000611c4d600f8b6040518082805190602001908083835b60208310611b775780518252601f199092019160209182019101611b58565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060010180549092508c91508110611bb557fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611c435780601f10611c1857610100808354040283529160200191611c43565b820191906000526020600020905b815481529060010190602001808311611c2657829003601f168201915b5050505050612232565b919c909b509099509397509295505050505050565b600d5481565b60606000806000611ce38560016010886040518082805190602001908083835b60208310611ca75780518252601f199092019160209182019101611c88565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030154929092039150612cb79050565b611ec760116010876040518082805190602001908083835b60208310611d1a5780518252601f199092019160209182019101611cfb565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160016010896040518082805190602001908083835b60208310611d845780518252601f199092019160209182019101611d65565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092206003015484549390039283109150611dc5905057fe5b906000526020600020016040518082805460018160011615610100020316600290048015611e2a5780601f10611e08576101008083540402835291820191611e2a565b820191906000526020600020905b815481529060010190602001808311611e16575b505092835250506040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015611ebd5780601f10611e9257610100808354040283529160200191611ebd565b820191906000526020600020905b815481529060010190602001808311611ea057829003601f168201915b5050505050611581565b93509350935093509193509193565b600654600160a060020a031681565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112ad5780601f10611282576101008083540402835291602001916112ad565b6040805180820190915260168152605260020a751c185e5b595b9d17d8db185d5cd94b98dc99585d195902602082015281565b6060600080600080611f8487612a4f565b6010876040518082805190602001908083835b60208310611fb65780518252601f199092019160209182019101611f97565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030154881091506120359050576040805160e560020a62461bcd0281526020600482015260106024820152608360020a6f09eeccae4ccd8deeecac840d2dcc8caf02604482015290519081900360640190fd5b6000809050866001016010896040518082805190602001908083835b602083106120705780518252601f199092019160209182019101612051565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030154929092111591506120b09050575060015b6060600080600061218d60108d6040518082805190602001908083835b602083106120ec5780518252601f1990920191602091820191016120cd565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030180549092508e9150811061212a57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611ebd5780601f10611e9257610100808354040283529160200191611ebd565b929f919e509c50909a50949850939650505050505050565b600e5481565b600754600160a060020a03163314612216576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206130ea8339815191526044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b61221f81612d93565b5050565b600754600160a060020a031681565b606080600061224084612a4f565b6010846040518082805190602001908083835b602083106122725780518252601f199092019160209182019101612253565b51815160209384036101000a600019018019909216911617905292019485525060405193849003810184208851909460109450899350918291908401908083835b602083106122d25780518252601f1990920191602091820191016122b3565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001016010866040518082805190602001908083835b6020831061233a5780518252601f19909201916020918201910161231b565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188206002908101548b54601f60018216159098029095019094160494850182900482028801820190528387529095945087935084019050828280156123f45780601f106123c9576101008083540402835291602001916123f4565b820191906000526020600020905b8154815290600101906020018083116123d757829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959850879450925084019050828280156124825780601f1061245757610100808354040283529160200191612482565b820191906000526020600020905b81548152906001019060200180831161246557829003601f168201915b505050505091509250925092509193909250565b600f816040518082805190602001908083835b602083106124c85780518252601f1990920191602091820191016124a9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000180546001816001161561010002031660029004905060001415151561256d576040805160e560020a62461bcd02815260206004820152601b60248201527f5468697320726563656976657220646f65736e27742065786973740000000000604482015290519081900360640190fd5b50565b600061257b83612d93565b506010826040518082805190602001908083835b602083106125ae5780518252601f19909201916020918201910161258f565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000018054600181600116156101000203166002900490506000141561277a5760606080604051908101604052808481526020016020604051908101604052806000815250815260200160008152602001828152506010846040518082805190602001908083835b602083106126685780518252601f199092019160209182019101612649565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381019093208451805191946126a994508593500190612f71565b5060208281015180516126c29260018501920190612f71565b5060408201516002820155606082015180516126e8916003840191602090910190612fef565b50905050600f846040518082805190602001908083835b6020831061271e5780518252601f1990920191602091820191016126ff565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101909320600190810180549182018082556000918252908590208851919561277695509201925090870190612f71565b5050505b6010826040518082805190602001908083835b602083106127ac5780518252601f19909201916020918201910161278d565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922095945050505050565b6000805b6005546040805160e260020a633ce8989d0281526024810184905260048101918252600080546002600019600183161561010002019091160460448301819052600160a060020a039094169363f3a26274939192869291829160640190859080156128905780601f1061286557610100808354040283529160200191612890565b820191906000526020600020905b81548152906001019060200180831161287357829003601f168201915b5050935050505060206040518083038186803b1580156128af57600080fd5b505afa1580156128c3573d6000803e3d6000fd5b505050506040513d60208110156128d957600080fd5b50519150600101600160a060020a03821615612a3a5760408051306044820181905260248201928352855160648301528551600160a060020a0386169387939091829160840190602086019080838360005b8381101561294357818101518382015260200161292b565b50505050905090810190601f1680156129705780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63738f32bb0217815290518251929650945084935091508083835b602083106129cf5780518252601f1990920191602091820191016129b0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612a31576040519150601f19603f3d011682016040523d82523d6000602084013e612a36565b606091505b5050505b600160a060020a03821615156127e457505050565b6010816040518082805190602001908083835b60208310612a815780518252601f199092019160209182019101612a62565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000180546001816001161561010002031660029004905060001415151561256d576040805160e560020a62461bcd02815260206004820152601c60248201527f54686973207265666572656e636520646f65736e277420657869737400000000604482015290519081900360640190fd5b6011816040518082805190602001908083835b60208310612b585780518252601f199092019160209182019101612b39565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000180546001816001161561010002031660029004905060001415151561256d576040805160e560020a62461bcd02815260206004820181905260248201526000805160206130ca833981519152604482015290519081900360640190fd5b6006546040805160e160020a63738f32bb028152306024820181905260048201928352845160448301528451600160a060020a039094169363e71e65769386939091829160640190602086019080838360005b83811015612c56578181015183820152602001612c3e565b50505050905090810190601f168015612c835780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612ca357600080fd5b505af11580156119fb573d6000803e3d6000fd5b612cc082612a4f565b6010826040518082805190602001908083835b60208310612cf25780518252601f199092019160209182019101612cd3565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060030180549092508391508110612d3057fe5b60009182526020909120015460026000196101006001841615020190911604151561221f576040805160e560020a62461bcd02815260206004820181905260248201526000805160206130ca833981519152604482015290519081900360640190fd5b6000600f826040518082805190602001908083835b60208310612dc75780518252601f199092019160209182019101612da8565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000180546001816001161561010002031660029004905060001415612f0c576060604080519081016040528084815260200182815250600f846040518082805190602001908083835b60208310612e635780518252601f199092019160209182019101612e44565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101909320845180519194612ea494508593500190612f71565b506020828101518051612ebd9260018501920190612fef565b5050600b8054600181018083556000929092528551919250612f08917f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9909101906020870190612f71565b5050505b600f826040518082805190602001908083835b60208310612f3e5780518252601f199092019160209182019101612f1f565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612fb257805160ff1916838001178555612fdf565b82800160010185558215612fdf579182015b82811115612fdf578251825591602001919060010190612fc4565b50612feb929150613048565b5090565b82805482825590600052602060002090810192821561303c579160200282015b8281111561303c578251805161302c918491602090910190612f71565b509160200191906001019061300f565b50612feb929150613062565b61150a91905b80821115612feb576000815560010161304e565b61150a91905b80821115612feb57600061307c8282613085565b50600101613068565b50805460018160011615610100020316600290046000825580601f106130ab575061256d565b601f01602090049060005260206000209081019061256d919061304856fe54686973207061796d656e7420636865636b20646f65736e27742065786973744f6e6c79205369676e617475726974206163636f756e742063616e2070657266a165627a7a72305820c1e69bbc98edc62626a9ee6af15efad3ab7f2103961a69056ab8ad8f8cedb7e60029",
  "sourceMap": "212:10324:13:-;;;1141:350;8:9:-1;5:2;;;30:1;27;20:12;5:2;1141:350:13;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1141:350:13;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;400:111:8;;;;;;;;;;;;;;;;;;;;1141:350:13;;-1:-1:-1;400:111:8;;-1:-1:-1;480:24:8;;-1:-1:-1;;;400:111:8;480:24;:::i;:::-;-1:-1:-1;;1293:15:13;;;;:10;;:15;;;;;:::i;:::-;-1:-1:-1;;1318:10:13;:23;;-1:-1:-1;;;;;;1318:23:13;;;1331:10;1318:23;;;;1352:12;:59;;-1:-1:-1;;;;;1352:59:13;;;;;;;;;1421:17;:63;;;;;;;;;;;212:10324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;212:10324:13;;;-1:-1:-1;212:10324:13;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "212:10324:13:-;;;;;;;;;-1:-1:-1;;;212:10324:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;900:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;900:21:13;;;;;;;;;;;;;;;;;;;;7784:247;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7784:247:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7784:247:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7784:247:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7784:247:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7784:247:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7784:247:13;;-1:-1:-1;7784:247:13;;-1:-1:-1;;;;;7784:247:13;8068:472;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8068:472:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8068:472:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8068:472:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;801:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;801:25:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;801:25:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;279:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;279:64:13;;;;302:43:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;302:43:8;;;;;;;;-1:-1:-1;;;;;302:43:8;;;;;;;;;;;;;;863:30:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;863:30:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;863:30:13;;;2674:618;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2674:618:13;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2674:618:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2674:618:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2674:618:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2674:618:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2674:618:13;;;;;;;;-1:-1:-1;2674:618:13;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;2674:618:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2674:618:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2674:618:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2674:618:13;;;;;;;;-1:-1:-1;2674:618:13;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;2674:618:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2674:618:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2674:618:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2674:618:13;;-1:-1:-1;;2674:618:13;;;-1:-1:-1;;;2674:618:13;;;;;;;;;;;;3298:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3298:127:13;;;;6001:252;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6001:252:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6001:252:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6001:252:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6001:252:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6001:252:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6001:252:13;;-1:-1:-1;6001:252:13;;-1:-1:-1;;;;;6001:252:13;3473:533;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3473:533:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3473:533:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3473:533:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3473:533:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3473:533:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3473:533:13;;-1:-1:-1;3473:533:13;;-1:-1:-1;;;;;3473:533:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3473:533:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;832:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;832:24:13;;;;771;;8:9:-1;5:2;;;30:1;27;20:12;5:2;771:24:13;;;;2210:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2210:458:13;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2210:458:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2210:458:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2210:458:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2210:458:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2210:458:13;;;;;;;;-1:-1:-1;2210:458:13;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;2210:458:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2210:458:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2210:458:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2210:458:13;;;;;;;;-1:-1:-1;2210:458:13;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;2210:458:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2210:458:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2210:458:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2210:458:13;;-1:-1:-1;;2210:458:13;;;-1:-1:-1;2210:458:13;;-1:-1:-1;;2210:458:13;1676:394;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1676:394:13;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1676:394:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1676:394:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1676:394:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1676:394:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1676:394:13;;;;;;;;-1:-1:-1;1676:394:13;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1676:394:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1676:394:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1676:394:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1676:394:13;;-1:-1:-1;;1676:394:13;;;-1:-1:-1;;;1676:394:13;;;;;;;;;;6818:919;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6818:919:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6818:919:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6818:919:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6818:919:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6818:919:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6818:919:13;;-1:-1:-1;;6818:919:13;;;-1:-1:-1;6818:919:13;;-1:-1:-1;;6818:919:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6818:919:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6818:919:13;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6818:919:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;927:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;927:19:13;;;;4083:704;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4083:704:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4083:704:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4083:704:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4083:704:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4083:704:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4083:704:13;;-1:-1:-1;4083:704:13;;-1:-1:-1;;;;;4083:704:13;351:42:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;351:42:8;;;;145:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;145:26:8;;;;349:69:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;349:69:13;;;;4894:1041;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4894:1041:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4894:1041:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4894:1041:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4894:1041:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4894:1041:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4894:1041:13;;-1:-1:-1;;4894:1041:13;;;-1:-1:-1;4894:1041:13;;-1:-1:-1;;4894:1041:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;952:18:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;952:18:13;;;;2076:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2076:128:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2076:128:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2076:128:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2076:128:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2076:128:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2076:128:13;;-1:-1:-1;2076:128:13;;-1:-1:-1;;;;;2076:128:13;739:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;739:25:13;;;;6298:420;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6298:420:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6298:420:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6298:420:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6298:420:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6298:420:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6298:420:13;;-1:-1:-1;6298:420:13;;-1:-1:-1;;;;;6298:420:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6298:420:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6298:420:13;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;900:21:13;;;;:::o;7784:247::-;7907:9;7932:35;7956:10;7932:23;:35::i;:::-;7985:9;7995:10;7985:21;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;7985:21:13;;;;;-1:-1:-1;7985:21:13;;;;;;;;;;274:1:-1;7985:32:13;:39;;7784:247;-1:-1:-1;;;;7784:247:13:o;8068:472::-;8268:14;:21;8175:16;;8205:9;;8260:29;;8239:92;;;;;-1:-1:-1;;;;;8239:92:13;;;;;;;;;;;;-1:-1:-1;;;;;8239:92:13;;;;;;;;;;;;;;;8381:14;:21;8342:16;;8413:1;8405:9;;-1:-1:-1;8377:69:13;;;-1:-1:-1;8442:4:13;8377:69;8477:14;:21;;8492:5;;8477:21;;;;;;;;;;;;;;;;8457:76;;;;;;;;;;;;-1:-1:-1;;8457:76:13;;;;;;;;;;;;;;;;;;;;;;;;;;8477:21;;8512:11;;8477:21;;8457:76;;8477:21;8457:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8068:472;;;:::o;801:25::-;;;;;;;;;;;;;;;-1:-1:-1;;801:25:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;279:64::-;;;;;;;;;;;;;-1:-1:-1;;;;;279:64:13;;;;;:::o;302:43:8:-;;;-1:-1:-1;;;;;302:43:8;;:::o;863:30:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;863:30:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;863:30:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2674:618;1568:10;;-1:-1:-1;;;;;1568:10:13;1554;:24;1533:118;;;;;-1:-1:-1;;;;;1533:118:13;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1533:118:13;;;;-1:-1:-1;;;;;1533:118:13;;;;;;;;;;;;;;;2933:30;2966:72;2993:10;3017:11;2966:13;:72::i;:::-;2933:105;;3081:116;;;;;;;;;3107:14;3081:116;;;;3135:6;3081:116;;;;3155:9;3081:116;;;;3178:9;3081:116;;;3049:13;3063:14;3049:29;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;3049:29:13;;;;;-1:-1:-1;3049:29:13;;;;;;;;;;;:148;;;;:29;;:148;;-1:-1:-1;3049:29:13;;-1:-1:-1;3049:148:13;;;:::i;:::-;-1:-1:-1;3049:148:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3208:19;;;27:10:-1;;23:18;;;45:23;;;-1:-1;3208:40:13;;;;;;;;;23:18:-1;;3208:40:13;;;;;;;;;;:::i;:::-;;;3259:26;3267:17;;;;;;;;;;;;;;-1:-1:-1;;;;;3267:17:13;;;3259:7;:26::i;:::-;1662:1;2674:618;;;;;;:::o;3298:127::-;3397:14;:21;3298:127;;:::o;6001:252::-;6129:9;6154:37;6179:11;6154:24;:37::i;:::-;6209:10;6220:11;6209:23;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;6209:23:13;;;;;-1:-1:-1;6209:23:13;;;;;;;;;;:30;;:37;;6001:252;-1:-1:-1;;;;6001:252:13:o;3473:533::-;3604:16;3634:11;3659:14;3687;3726:43;3754:14;3726:27;:43::i;:::-;3801:13;3815:14;3801:29;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;3801:29:13;;;;;-1:-1:-1;3801:29:13;;;;;;;;;;3847;;3801;;3847:13;;-1:-1:-1;3847:29:13;;-1:-1:-1;3801:29:13;;;3847;;;;;3801;3847;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;3847:29:13;;;;;-1:-1:-1;3847:29:13;;;;;;;;;;274:1:-1;3847:36:13;;3897:29;;3847:36;;3897:13;;-1:-1:-1;3897:29:13;;-1:-1:-1;3847:29:13;;;3897;;;;;3847;3897;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;3897:29:13;;;;;-1:-1:-1;3897:29:13;;;;;;;;;;:39;;;3950:29;;3897:39;;3950:13;;-1:-1:-1;3950:29:13;;-1:-1:-1;3897:29:13;;;3950;;;;;3897;3950;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;340:21;;;311:9;;295:26;;;;377:20;;;;365:33;;;3950:29:13;;;;;;;;;;;;;;;;;;:39;;;3780:219;;;;274:1:-1;3780:219:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3950:39;;:29;-1:-1:-1;3780:219:13;;-1:-1:-1;3780:219:13;;;;-1:-1:-1;3780:219:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3473:533;;;;;:::o;832:24::-;;;;;;;;;;;;;;;-1:-1:-1;;832:24:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;771;;;;;;;;;;;;;;;-1:-1:-1;;771:24:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2210:458;1568:10;;-1:-1:-1;;;;;1568:10:13;1554;:24;1533:118;;;;;-1:-1:-1;;;;;1533:118:13;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1533:118:13;;;;-1:-1:-1;;;;;1533:118:13;;;;;;;;;;;;;;;2426:30;2459:72;2486:10;2510:11;2459:13;:72::i;:::-;2542:29;;2426:105;;-1:-1:-1;2542:29:13;;2426:105;;2542:29;;;;;:::i;:::-;-1:-1:-1;2581:35:13;;;;:18;;;;:35;;;;;:::i;:::-;-1:-1:-1;2626:18:13;;:35;-1:-1:-1;;;2210:458:13:o;1676:394::-;1568:10;;-1:-1:-1;;;;;1568:10:13;1554;:24;1533:118;;;;;-1:-1:-1;;;;;1533:118:13;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1533:118:13;;;;-1:-1:-1;;;;;1533:118:13;;;;;;;;;;;;;;;1879:7;:13;;;1902:9;:17;;;1929:21;;;;:10;;:21;;;;;:::i;:::-;-1:-1:-1;1960:6:13;:22;;;1992:23;;;;:11;;:23;;;;;:::i;:::-;;2026:37;2043:19;;;;;;;;;;;;;;-1:-1:-1;;;;;2043:19:13;;;2026:16;:37::i;:::-;1676:394;;;;;:::o;6818:919::-;6970:16;7000:19;7033:10;7057:9;7091:35;7115:10;7091:23;:35::i;:::-;7166:9;7176:10;7166:21;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;7166:21:13;;;;;-1:-1:-1;7166:21:13;;;;;;;;;;274:1:-1;7166:32:13;:39;7158:47;;;-1:-1:-1;7137:110:13;;-1:-1:-1;7137:110:13;;;;-1:-1:-1;;;;;7137:110:13;;;;;;;;;;;;-1:-1:-1;;;;;7137:110:13;;;;;;;;;;;;;;;7258:16;7277:5;7258:24;;7339:5;7347:1;7339:9;7297;7307:10;7297:21;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;7297:21:13;;;;;-1:-1:-1;7297:21:13;;;;;;;;;;274:1:-1;7297:32:13;:39;:51;;;;7293:87;;-1:-1:-1;7293:87:13;;-1:-1:-1;7293:87:13;-1:-1:-1;7376:4:13;7293:87;7405:25;7444:28;7486:19;7518:79;7548:9;7558:10;7548:21;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;7548:21:13;;;;;-1:-1:-1;7548:21:13;;;;;;;;;;274:1:-1;7548:32:13;:39;;:32;;-1:-1:-1;7581:5:13;;-1:-1:-1;7548:39:13;;;;;;;;;;;;;;;;7518:79;;;;;;;-1:-1:-1;;7518:79:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7548:39;7518:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:16;:79::i;:::-;7391:206;;;;-1:-1:-1;7391:206:13;;-1:-1:-1;7709:11:13;;-1:-1:-1;6818:919:13;;-1:-1:-1;;;;;;6818:919:13:o;927:19::-;;;;:::o;4083:704::-;4224:16;4254:11;4279:14;4307;4346:130;4400:11;4465:1;4425:10;4436:11;4425:23;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;4425:23:13;;;;;-1:-1:-1;4425:23:13;;;;;;;;;;:30;;:37;:41;;;;;-1:-1:-1;4346:40:13;;-1:-1:-1;4346:130:13:i;:::-;4494:286;4527:13;4558:10;4590:11;4558:61;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;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;;;4558:61:13;;;;;;;;;;;;;;;;;;;;;:68;;4734:1;4648:10;4684:11;4648:69;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;4648:69:13;;;;;-1:-1:-1;4648:69:13;;;;;;;;;;:76;;:83;4558:195;;4648:87;;;;4558:195;;;-1:-1:-1;4558:195:13;;-1:-1:-1;4558:195:13;;;;;;;;;;4527:240;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4527:240:13;;;-1:-1:-1;;4527:240:13;;;;;;;;;;;;4494:286;;;;;;;;;-1:-1:-1;;4494:286:13;;;;;;;;;;;;;;;;;;;;;;;4527:240;;;;4494:286;;;4527:240;4494:286;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;:286::i;:::-;4487:293;;;;;;;;4083:704;;;;;:::o;351:42:8:-;;;-1:-1:-1;;;;;351:42:8;;:::o;145:26::-;;;;;;;;;;;;;;;-1:-1:-1;;145:26:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;349:69:13;;;;;;;;;;;;;-1:-1:-1;;;;;349:69:13;;;;;:::o;4894:1041::-;5051:16;5081:11;5106:14;5134;5162:9;5196:37;5221:11;5196:24;:37::i;:::-;5273:10;5284:11;5273:23;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;5273:23:13;;;;;-1:-1:-1;5273:23:13;;;;;;;;;;:30;;:37;5265:45;;;-1:-1:-1;5244:108:13;;-1:-1:-1;5244:108:13;;;;-1:-1:-1;;;;;5244:108:13;;;;;;;;;;;;-1:-1:-1;;;;;5244:108:13;;;;;;;;;;;;;;;5363:16;5382:5;5363:24;;5442:5;5450:1;5442:9;5402:10;5413:11;5402:23;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;5402:23:13;;;;;-1:-1:-1;5402:23:13;;;;;;;;;;:30;;:37;:49;;;;5398:85;;-1:-1:-1;5398:85:13;;-1:-1:-1;5398:85:13;-1:-1:-1;5479:4:13;5398:85;5508:28;5550:23;5587:26;5627;5666:80;5699:10;5710:11;5699:23;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;5699:23:13;;;;;-1:-1:-1;5699:23:13;;;;;;;;;;:30;;:37;;:30;;-1:-1:-1;5730:5:13;;-1:-1:-1;5699:37:13;;;;;;;;;;;;;;;;5666:80;;;;;;;-1:-1:-1;;5666:80:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5699:37;5666:80;;;;;;;;;;;;;;;;;;;;;;;;;5494:252;;;;-1:-1:-1;5494:252:13;-1:-1:-1;5494:252:13;;-1:-1:-1;5907:11:13;;-1:-1:-1;4894:1041:13;;-1:-1:-1;;;;;;;4894:1041:13:o;952:18::-;;;;:::o;2076:128::-;1568:10;;-1:-1:-1;;;;;1568:10:13;1554;:24;1533:118;;;;;-1:-1:-1;;;;;1533:118:13;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1533:118:13;;;;-1:-1:-1;;;;;1533:118:13;;;;;;;;;;;;;;;2181:16;2194:2;2181:12;:16::i;:::-;;2076:128;:::o;739:25::-;;;-1:-1:-1;;;;;739:25:13;;:::o;6298:420::-;6423:16;6453:19;6486:10;6521:37;6546:11;6521:24;:37::i;:::-;6589:10;6600:11;6589:23;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;6589:23:13;;;;;-1:-1:-1;6589:23:13;;;;;;;;;;6629;;6589;;6629:10;;-1:-1:-1;6629:23:13;;-1:-1:-1;6589:23:13;;;6629;;;;;6589;6629;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;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;;;6629:23:13;;;;;;;;;;;;;;;;;;;;;:29;;6672:10;6683:11;6672:23;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;340:21;;;311:9;;295:26;;;;377:20;;;;365:33;;;6672:23:13;;;;;;;;;;;;;;;;;;:29;;;;;6569:142;;;274:1:-1;6569:142:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6672:29;;:23;-1:-1:-1;6569:142:13;;-1:-1:-1;6569:142:13;;;-1:-1:-1;6569:142:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6569:142:13;;;;;;;;;;;;;-1:-1:-1;;6569:142:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6569:142:13;;-1:-1:-1;6569:142:13;-1:-1:-1;6569:142:13;;;-1:-1:-1;6569:142:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6298:420;;;;;:::o;9717:224::-;9852:9;9862:2;9852:13;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;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;;;9852:13:13;;;;;;;;;;;;;;;;;;;;;:16;;9846:30;;;;;;;;;;;;;;;;9880:1;9846:35;;9825:109;;;;;;;-1:-1:-1;;;;;9825:109:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;9717:224;:::o;8892:586::-;9023:17;9056:24;9069:10;9056:12;:24::i;:::-;;9101:10;9112:11;9101:23;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;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;;;9101:23:13;;;;;;;;;;;;;;;;;;;;;:26;;9095:40;;;;;;;;;;;;;;;;9139:1;9095:45;9091:340;;;9157:32;9230:125;;;;;;;;;9257:11;9230:125;;;;;;;;;;;;;;;;;;;;;9306:1;9230:125;;;;9325:16;9230:125;;;9204:10;9215:11;9204:23;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;9204:23:13;;;;;-1:-1:-1;9204:23:13;;;;;;;;;;;:151;;;;:23;;:151;;-1:-1:-1;9204:23:13;;-1:-1:-1;9204:151:13;;;:::i;:::-;-1:-1:-1;9204:151:13;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9204:151:13;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;9370:9;9380:10;9370:21;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;9370:21:13;;;;;-1:-1:-1;9370:21:13;;;;;;;;;;;274:1:-1;9370:32:13;;;27:10:-1;;23:18;;;45:23;;;-1:-1;9370:50:13;;;;;;;;;23:18:-1;;9370:50:13;;-1:-1:-1;9370:50:13;;;-1:-1:-1;9370:50:13;;;;;:::i;:::-;;;9091:340;;9448:10;9459:11;9448:23;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;9448:23:13;;;;;-1:-1:-1;9448:23:13;;;;;;;;;;;8892:586;-1:-1:-1;;;;;8892:586:13:o;704:653:8:-;777:24;;848:503;884:12;;:70;;;-1:-1:-1;;;;;884:70:8;;;;;;;;;;;;;;:12;:70;;;-1:-1:-1;;884:12:8;:70;;;:12;:70;;;;;;;;;;;;-1:-1:-1;;;;;884:12:8;;;;:37;;:12;;936:17;;884:70;;;;;;:12;;:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;884:70:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;884:70:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;884:70:8;;-1:-1:-1;968:19:8;;-1:-1:-1;;;;;1006:30:8;;;1002:299;;1099:169;;;1241:4;1099:169;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1056:21:8;;;1198:9;;1099:169;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1099:169:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1099:169:8;;;-1:-1:-1;;26:21;;;22:32;6:49;;1099:169:8;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;1056:230:8;;;;1099:169;;-1:-1:-1;1056:230:8;-1:-1:-1;1056:230:8;;-1:-1:-1;25:18;-1:-1;1056:230:8;;25:18:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;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;;;1056:230:8;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1056:230:8;;1002:299;-1:-1:-1;;;;;1319:30:8;;;;848:503;;704:653;;;:::o;9484:227:13:-;9620:10;9631:2;9620:14;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;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;;;9620:14:13;;;;;;;;;;;;;;;;;;;;;:17;;9614:31;;;;;;;;;;;;;;;;9649:1;9614:36;;9593:111;;;;;;;-1:-1:-1;;;;;9593:111:13;;;;;;;;;;;;;;;;;;;;;;;;;;;10297:237;10436:13;10450:2;10436:17;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;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;;;10436:17:13;;;;;;;;;;;;;;;;;;;;;:20;;10430:34;;;;;;;;;;;;;;;;10468:1;10430:39;;10409:118;;;;;;;-1:-1:-1;;;;;10409:118:13;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10409:118:13;;;;;;;;;;;;;;517:181:8;603:17;;:88;;;-1:-1:-1;;;;;603:88:8;;676:4;603:88;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;603:17:8;;;;:24;;641:13;;603:88;;;;;;;;;;;;;;:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;603:88:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;603:88:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;9947:344:13;10101:37;10126:11;10101:24;:37::i;:::-;10176:10;10187:11;10176:23;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;10176:23:13;;;;;-1:-1:-1;10176:23:13;;;;;;;;;;:30;;:37;;:30;;-1:-1:-1;10207:5:13;;-1:-1:-1;10176:37:13;;;;;;;;;;;;;;;10170:51;;-1:-1:-1;;10170:51:13;;;;;;;;;;;:56;;10149:135;;;;;-1:-1:-1;;;;;10149:135:13;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10149:135:13;;;;;;;;;;;;;;8546:340;8633:16;8675:9;8685:2;8675:13;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;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;;;8675:13:13;;;;;;;;;;;;;;;;;;;;;:16;;8669:30;;;;;;;;;;;;;;;;8703:1;8669:35;8665:184;;;8721:25;8777:23;;;;;;;;;8786:2;8777:23;;;;8790:9;8777:23;;;8761:9;8771:2;8761:13;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;8761:13:13;;;;;-1:-1:-1;8761:13:13;;;;;;;;;;;:39;;;;:13;;:39;;-1:-1:-1;8761:13:13;;-1:-1:-1;8761:39:13;;;:::i;:::-;-1:-1:-1;8761:39:13;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;8815:14:13;27:10:-1;;39:1;23:18;;45:23;;;-1:-1;8815:23:13;;;;;;23:18:-1;;-1:-1;8815:23:13;;;;;;;;;;;;:::i;:::-;;;8665:184;;8866:9;8876:2;8866:13;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;8866:13:13;;;;;-1:-1:-1;8866:13:13;;;;;;;;;;;8546:340;-1:-1:-1;;;;8546:340:13:o;212:10324::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;212:10324:13;;;-1:-1:-1;212:10324:13;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;212:10324:13;;;-1:-1:-1;212:10324:13;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i",
  "source": "pragma solidity <0.6.0;\n\n/*\nGas to deploy: 3.536.741\n\nPaymentCheck status legend:\n\nUNPROCESSED    = 0;\nPROCESSING     = 1;\nPAID           = 2;\nOVER_PAID      = 3;\nPARTIALLY_PAID = 4;\n*/\n\nimport \"./Clause.sol\";\n\n\ncontract Payment is Clause(\n    \"payment-clause-notifiers\"\n)\n{\n    string constant public CLAUSE_EVENT_TYPE = \"payment_check.added\";\n    string constant public CREATION_EVENT_TYPE = \"payment_clause.created\";\n\n    struct PaymentCheck {\n        string id;\n        uint status;\n        uint checkedAt;\n        uint createdAt;\n    }\n\n    struct Reference {\n        string id;\n        string value;\n        uint price;\n        string[] checks;\n    }\n\n    struct Receiver {\n        string id;\n        string[] references;\n    }\n\n    address public signaturit;\n\n    string public contractId;\n    string public signatureId;\n    string public documentId;\n\n    string[] public receiversArray;\n\n    uint public startDate;\n    uint public endDate;\n    uint public period;\n\n    mapping(string => Receiver) private receivers;\n    mapping(string => Reference) private references;\n    mapping(string => PaymentCheck) private paymentChecks;\n\n    constructor(\n        address userContractAddress,\n        address signatureContractAddress,\n        string memory id\n    )\n        public\n    {\n        contractId = id;\n        signaturit = msg.sender;\n\n        userContract = SignaturitUserInterface(userContractAddress);\n        signatureContract = NotifierInterface(signatureContractAddress);\n    }\n\n    modifier signaturitOnly() {\n        require(\n            msg.sender == signaturit,\n            \"Only Signaturit account can perform this action\"\n        );\n\n        _;\n    }\n\n    function init(\n        string memory signature,\n        string memory document,\n        uint start,\n        uint end,\n        uint paymentPeriod\n    )\n        public\n        signaturitOnly\n    {\n        endDate = end;\n        startDate = start;\n        documentId = document;\n        period = paymentPeriod;\n        signatureId = signature;\n\n        _notifySignature(CREATION_EVENT_TYPE);\n    }\n\n    function setReceiver(\n        string memory id\n    )\n        public\n        signaturitOnly\n    {\n        _getReceiver(id);\n    }\n\n    function setReference(\n        string memory receiverId,\n        string memory referenceId,\n        string memory referenceValue,\n        uint referencePrice\n    )\n        public\n        signaturitOnly\n    {\n        Reference storage newReference = _getReference(\n            receiverId,\n            referenceId\n        );\n\n        newReference.id = referenceId;\n        newReference.value = referenceValue;\n        newReference.price = referencePrice;\n    }\n\n    function addPaymentCheck(\n        string memory receiverId,\n        string memory referenceId,\n        string memory paymentCheckId,\n        uint status,\n        uint checkedAt,\n        uint createdAt\n    )\n        public\n        signaturitOnly\n    {\n        Reference storage newReference = _getReference(\n            receiverId,\n            referenceId\n        );\n\n        paymentChecks[paymentCheckId] = PaymentCheck(\n            paymentCheckId,\n            status,\n            checkedAt,\n            createdAt\n        );\n\n        newReference.checks.push(paymentCheckId);\n\n        _notify(CLAUSE_EVENT_TYPE);\n    }\n\n    function getReceiversSize()\n        public\n        view\n        returns(uint)\n    {\n        return receiversArray.length;\n    }\n\n    // Get paymentCheck if you got the id\n    function getPaymentCheckById(\n        string memory paymentCheckId\n    )\n        public\n        view\n        returns (\n            string memory id,\n            uint status,\n            uint checkedAt,\n            uint createdAt\n        )\n    {\n        _checkPaymentCheckExistence(paymentCheckId);\n\n        return (\n            paymentChecks[paymentCheckId].id,\n            paymentChecks[paymentCheckId].status,\n            paymentChecks[paymentCheckId].checkedAt,\n            paymentChecks[paymentCheckId].createdAt\n        );\n    }\n\n    // Get paymentCheckID if you want the last one given a referenceId\n    function getLastPaymentCheckFromReference(\n        string memory referenceId\n    )\n        public\n        view\n        returns (\n            string memory id,\n            uint status,\n            uint checkedAt,\n            uint createdAt\n        )\n    {\n        _checkPaymentCheckFromReferenceExistence(\n            referenceId,\n            references[referenceId].checks.length - 1\n        );\n\n        return getPaymentCheckById(\n            paymentChecks[\n                references[\n                    referenceId\n                ].checks[\n                    references[\n                        referenceId\n                    ].checks.length - 1\n                ]\n            ].id\n        );\n    }\n\n    // Get paymentCheckID if you want to iterate through all\n    // the paymentChecks of a reference\n    function getPaymentCheckFromReference(\n        string memory referenceId,\n        uint index\n    )\n        public\n        view\n        returns (\n            string memory id,\n            uint status,\n            uint checkedAt,\n            uint createdAt,\n            bool more\n        )\n    {\n        _checkReferenceExistence(referenceId);\n\n        require(\n            index < references[referenceId].checks.length,\n            \"Overflowed index\"\n        );\n\n        bool thereIsMore = false;\n\n        if (references[referenceId].checks.length > index + 1)\n            thereIsMore = true;\n\n        (\n            string memory paymentCheckId,\n            uint paymentCheckStatus,\n            uint paymentCheckCheckedAt,\n            uint paymentCheckCreatedAt\n        ) = getPaymentCheckById(\n            references[referenceId].checks[index]\n        );\n\n        return(\n            paymentCheckId,\n            paymentCheckStatus,\n            paymentCheckCheckedAt,\n            paymentCheckCreatedAt,\n            thereIsMore\n        );\n    }\n\n    // Get how many paymentChecks there are for a reference\n    function getPaymentCheckSizeFromReference(\n        string memory referenceId\n    )\n        public\n        view\n        returns (uint size)\n    {\n        _checkReferenceExistence(referenceId);\n\n        return references[referenceId].checks.length;\n    }\n\n    // Get reference if you got the id\n    function getReferenceById(\n        string memory referenceId\n    )\n        public\n        view\n        returns (\n            string memory id,\n            string memory value,\n            uint price\n        )\n    {\n        _checkReferenceExistence(referenceId);\n\n        return(\n            references[referenceId].id,\n            references[referenceId].value,\n            references[referenceId].price\n        );\n    }\n\n    // Get referenceID if you want to iterate through all\n    // the references of a receiver\n    function getReferenceFromReceiver(\n        string memory receiverId,\n        uint index\n    )\n        public\n        view\n        returns (\n            string memory id,\n            string memory value,\n            uint price,\n            bool more\n        )\n    {\n        _checkReceiverExistence(receiverId);\n\n        require(\n            index < receivers[receiverId].references.length,\n            \"Overflowed index\"\n        );\n\n        bool thereIsMore = false;\n\n        if (receivers[receiverId].references.length > index + 1)\n            thereIsMore = true;\n\n        (\n            string memory referenceId,\n            string memory referenceValue,\n            uint referencePrice\n        ) = getReferenceById(\n            receivers[receiverId].references[index]\n        );\n\n        return(\n            referenceId,\n            referenceValue,\n            referencePrice,\n            thereIsMore\n        );\n    }\n\n    // Get references size from receiver\n    function getReferenceSizeFromReceiver(\n        string memory receiverId\n    )\n        public\n        view\n        returns (uint size)\n    {\n        _checkReceiverExistence(receiverId);\n\n        return receivers[receiverId].references.length;\n    }\n\n    // Get receiverID by index\n    function getReceiverId(\n        uint index\n    )\n        public\n        view\n        returns (\n            string memory id,\n            bool more\n        )\n    {\n        require(\n            index < receiversArray.length,\n            \"Overflowed index\"\n        );\n\n        bool thereIsMore = false;\n\n        if (receiversArray.length > index + 1)\n            thereIsMore = true;\n\n        return(\n            receiversArray[index],\n            thereIsMore\n        );\n    }\n\n    function _getReceiver(\n        string memory id\n    )\n        private\n        returns (Receiver storage)\n    {\n        if (bytes(receivers[id].id).length == 0) {\n\n            string[] memory tmpString;\n\n            receivers[id] = Receiver(id, tmpString);\n\n            receiversArray.push(id);\n        }\n\n        return receivers[id];\n    }\n\n    function _getReference(\n        string memory receiverId,\n        string memory referenceId\n    )\n        private\n        returns (Reference storage)\n    {\n        _getReceiver(receiverId);\n\n        if (bytes(references[referenceId].id).length == 0) {\n\n            string[] memory tmpPaymentChecks;\n\n            references[referenceId] = Reference(\n                referenceId,\n                \"\",\n                0,\n                tmpPaymentChecks\n            );\n\n            receivers[receiverId].references.push(referenceId);\n        }\n\n        return references[referenceId];\n    }\n\n    function _checkReferenceExistence(\n        string memory id\n    )\n        private\n        view\n    {\n        require(\n            bytes(references[id].id).length != 0,\n            \"This reference doesn't exist\"\n        );\n    }\n\n    function _checkReceiverExistence(\n        string memory id\n    )\n        private\n        view\n    {\n        require(\n            bytes(receivers[id].id).length != 0,\n            \"This receiver doesn't exist\"\n        );\n    }\n\n    function _checkPaymentCheckFromReferenceExistence(\n        string memory referenceId,\n        uint index\n    )\n        private\n        view\n    {\n        _checkReferenceExistence(referenceId);\n\n        require(\n            bytes(references[referenceId].checks[index]).length != 0,\n            \"This payment check doesn't exist\"\n        );\n    }\n\n    function _checkPaymentCheckExistence(\n        string memory id\n    )\n        private\n        view\n    {\n        require(\n            bytes(paymentChecks[id].id).length != 0,\n            \"This payment check doesn't exist\"\n        );\n    }\n}\n",
  "sourcePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Payment.sol",
  "ast": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Payment.sol",
    "exportedSymbols": {
      "Payment": [
        3166
      ]
    },
    "id": 3167,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2401,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:13"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Clause.sol",
        "file": "./Clause.sol",
        "id": 2402,
        "nodeType": "ImportDirective",
        "scope": 3167,
        "sourceUnit": 1708,
        "src": "187:22:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": [
              {
                "argumentTypes": null,
                "hexValue": "7061796d656e742d636c617573652d6e6f74696669657273",
                "id": 2404,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "string",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "244:26:13",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_stringliteral_757e3c91c30725599892de8769997ed1c7b74e26fe73637ce24a95ccb40bd258",
                  "typeString": "literal_string \"payment-clause-notifiers\""
                },
                "value": "payment-clause-notifiers"
              }
            ],
            "baseName": {
              "contractScope": null,
              "id": 2403,
              "name": "Clause",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1707,
              "src": "232:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Clause_$1707",
                "typeString": "contract Clause"
              }
            },
            "id": 2405,
            "nodeType": "InheritanceSpecifier",
            "src": "232:40:13"
          }
        ],
        "contractDependencies": [
          1707
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3166,
        "linearizedBaseContracts": [
          3166,
          1707
        ],
        "name": "Payment",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 2408,
            "name": "CLAUSE_EVENT_TYPE",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "279:64:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2406,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "279:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7061796d656e745f636865636b2e6164646564",
              "id": 2407,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "322:21:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2889ca0639ae00927f6713561bf60d7d68ca787d04db32b09ccc9d57f1c70036",
                "typeString": "literal_string \"payment_check.added\""
              },
              "value": "payment_check.added"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2411,
            "name": "CREATION_EVENT_TYPE",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "349:69:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2409,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "349:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7061796d656e745f636c617573652e63726561746564",
              "id": 2410,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "394:24:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8692ad01fe67ad9dfd2c7e5cd12c282c30db07c2d37128c1b7a41fe4639ff20d",
                "typeString": "literal_string \"payment_clause.created\""
              },
              "value": "payment_clause.created"
            },
            "visibility": "public"
          },
          {
            "canonicalName": "Payment.PaymentCheck",
            "id": 2420,
            "members": [
              {
                "constant": false,
                "id": 2413,
                "name": "id",
                "nodeType": "VariableDeclaration",
                "scope": 2420,
                "src": "455:9:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2412,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "455:6:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2415,
                "name": "status",
                "nodeType": "VariableDeclaration",
                "scope": 2420,
                "src": "474:11:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2414,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "474:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2417,
                "name": "checkedAt",
                "nodeType": "VariableDeclaration",
                "scope": 2420,
                "src": "495:14:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2416,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "495:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2419,
                "name": "createdAt",
                "nodeType": "VariableDeclaration",
                "scope": 2420,
                "src": "519:14:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2418,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "519:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "PaymentCheck",
            "nodeType": "StructDefinition",
            "scope": 3166,
            "src": "425:115:13",
            "visibility": "public"
          },
          {
            "canonicalName": "Payment.Reference",
            "id": 2430,
            "members": [
              {
                "constant": false,
                "id": 2422,
                "name": "id",
                "nodeType": "VariableDeclaration",
                "scope": 2430,
                "src": "573:9:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2421,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "573:6:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2424,
                "name": "value",
                "nodeType": "VariableDeclaration",
                "scope": 2430,
                "src": "592:12:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2423,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "592:6:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2426,
                "name": "price",
                "nodeType": "VariableDeclaration",
                "scope": 2430,
                "src": "614:10:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2425,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "614:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2429,
                "name": "checks",
                "nodeType": "VariableDeclaration",
                "scope": 2430,
                "src": "634:15:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                  "typeString": "string[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 2427,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "634:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "id": 2428,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "634:8:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                    "typeString": "string[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Reference",
            "nodeType": "StructDefinition",
            "scope": 3166,
            "src": "546:110:13",
            "visibility": "public"
          },
          {
            "canonicalName": "Payment.Receiver",
            "id": 2436,
            "members": [
              {
                "constant": false,
                "id": 2432,
                "name": "id",
                "nodeType": "VariableDeclaration",
                "scope": 2436,
                "src": "688:9:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2431,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "688:6:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2435,
                "name": "references",
                "nodeType": "VariableDeclaration",
                "scope": 2436,
                "src": "707:19:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                  "typeString": "string[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 2433,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "707:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "id": 2434,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "707:8:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                    "typeString": "string[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Receiver",
            "nodeType": "StructDefinition",
            "scope": 3166,
            "src": "662:71:13",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2438,
            "name": "signaturit",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "739:25:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2437,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "739:7:13",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2440,
            "name": "contractId",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "771:24:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 2439,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "771:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2442,
            "name": "signatureId",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "801:25:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 2441,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "801:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2444,
            "name": "documentId",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "832:24:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 2443,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "832:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2447,
            "name": "receiversArray",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "863:30:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
              "typeString": "string[]"
            },
            "typeName": {
              "baseType": {
                "id": 2445,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "863:6:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "id": 2446,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "863:8:13",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                "typeString": "string[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2449,
            "name": "startDate",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "900:21:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2448,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "900:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2451,
            "name": "endDate",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "927:19:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2450,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "927:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2453,
            "name": "period",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "952:18:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2452,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "952:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2457,
            "name": "receivers",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "977:45:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
              "typeString": "mapping(string => struct Payment.Receiver)"
            },
            "typeName": {
              "id": 2456,
              "keyType": {
                "id": 2454,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "985:6:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "977:27:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                "typeString": "mapping(string => struct Payment.Receiver)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2455,
                "name": "Receiver",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2436,
                "src": "995:8:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Receiver_$2436_storage_ptr",
                  "typeString": "struct Payment.Receiver"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2461,
            "name": "references",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "1028:47:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
              "typeString": "mapping(string => struct Payment.Reference)"
            },
            "typeName": {
              "id": 2460,
              "keyType": {
                "id": 2458,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1036:6:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "1028:28:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                "typeString": "mapping(string => struct Payment.Reference)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2459,
                "name": "Reference",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2430,
                "src": "1046:9:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                  "typeString": "struct Payment.Reference"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2465,
            "name": "paymentChecks",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "1081:53:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
              "typeString": "mapping(string => struct Payment.PaymentCheck)"
            },
            "typeName": {
              "id": 2464,
              "keyType": {
                "id": 2462,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1089:6:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "1081:31:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                "typeString": "mapping(string => struct Payment.PaymentCheck)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2463,
                "name": "PaymentCheck",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2420,
                "src": "1099:12:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage_ptr",
                  "typeString": "struct Payment.PaymentCheck"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2495,
              "nodeType": "Block",
              "src": "1283:208:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2474,
                      "name": "contractId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2440,
                      "src": "1293:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2475,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2471,
                      "src": "1306:2:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1293:15:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2477,
                  "nodeType": "ExpressionStatement",
                  "src": "1293:15:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2478,
                      "name": "signaturit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2438,
                      "src": "1318:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2479,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "1331:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1331:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1318:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2482,
                  "nodeType": "ExpressionStatement",
                  "src": "1318:23:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2483,
                      "name": "userContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1628,
                      "src": "1352:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2485,
                          "name": "userContractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2467,
                          "src": "1391:19:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2484,
                        "name": "SignaturitUserInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7251,
                        "src": "1367:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignaturitUserInterface_$7251_$",
                          "typeString": "type(contract SignaturitUserInterface)"
                        }
                      },
                      "id": 2486,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1367:44:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "src": "1352:59:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                      "typeString": "contract SignaturitUserInterface"
                    }
                  },
                  "id": 2488,
                  "nodeType": "ExpressionStatement",
                  "src": "1352:59:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2489,
                      "name": "signatureContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1630,
                      "src": "1421:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_NotifierInterface_$6927",
                        "typeString": "contract NotifierInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2491,
                          "name": "signatureContractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2469,
                          "src": "1459:24:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2490,
                        "name": "NotifierInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6927,
                        "src": "1441:17:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_NotifierInterface_$6927_$",
                          "typeString": "type(contract NotifierInterface)"
                        }
                      },
                      "id": 2492,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1441:43:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_NotifierInterface_$6927",
                        "typeString": "contract NotifierInterface"
                      }
                    },
                    "src": "1421:63:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NotifierInterface_$6927",
                      "typeString": "contract NotifierInterface"
                    }
                  },
                  "id": 2494,
                  "nodeType": "ExpressionStatement",
                  "src": "1421:63:13"
                }
              ]
            },
            "documentation": null,
            "id": 2496,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2472,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2467,
                  "name": "userContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "1162:27:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2466,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1162:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2469,
                  "name": "signatureContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "1199:32:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2468,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1199:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2471,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "1241:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2470,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1241:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1152:111:13"
            },
            "returnParameters": {
              "id": 2473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1283:0:13"
            },
            "scope": 3166,
            "src": "1141:350:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2507,
              "nodeType": "Block",
              "src": "1523:147:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2499,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7304,
                            "src": "1554:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1554:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2501,
                          "name": "signaturit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2438,
                          "src": "1568:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1554:24:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c79205369676e617475726974206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 2503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1592:49:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c4d39fb6c3ef76259aa8a9c7aa83179d818e17cba0db927afcdb36c571443b99",
                          "typeString": "literal_string \"Only Signaturit account can perform this action\""
                        },
                        "value": "Only Signaturit account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c4d39fb6c3ef76259aa8a9c7aa83179d818e17cba0db927afcdb36c571443b99",
                          "typeString": "literal_string \"Only Signaturit account can perform this action\""
                        }
                      ],
                      "id": 2498,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "1533:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1533:118:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2505,
                  "nodeType": "ExpressionStatement",
                  "src": "1533:118:13"
                },
                {
                  "id": 2506,
                  "nodeType": "PlaceholderStatement",
                  "src": "1662:1:13"
                }
              ]
            },
            "documentation": null,
            "id": 2508,
            "name": "signaturitOnly",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2497,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1520:2:13"
            },
            "src": "1497:173:13",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2547,
              "nodeType": "Block",
              "src": "1869:201:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2523,
                      "name": "endDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2451,
                      "src": "1879:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2524,
                      "name": "end",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2516,
                      "src": "1889:3:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1879:13:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2526,
                  "nodeType": "ExpressionStatement",
                  "src": "1879:13:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2527,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2449,
                      "src": "1902:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2528,
                      "name": "start",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2514,
                      "src": "1914:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1902:17:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2530,
                  "nodeType": "ExpressionStatement",
                  "src": "1902:17:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2533,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2531,
                      "name": "documentId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2444,
                      "src": "1929:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2532,
                      "name": "document",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2512,
                      "src": "1942:8:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1929:21:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2534,
                  "nodeType": "ExpressionStatement",
                  "src": "1929:21:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2535,
                      "name": "period",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2453,
                      "src": "1960:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2536,
                      "name": "paymentPeriod",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2518,
                      "src": "1969:13:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1960:22:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2538,
                  "nodeType": "ExpressionStatement",
                  "src": "1960:22:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2539,
                      "name": "signatureId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2442,
                      "src": "1992:11:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2540,
                      "name": "signature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2510,
                      "src": "2006:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1992:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2542,
                  "nodeType": "ExpressionStatement",
                  "src": "1992:23:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2544,
                        "name": "CREATION_EVENT_TYPE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2411,
                        "src": "2043:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2543,
                      "name": "_notifySignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1655,
                      "src": "2026:16:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 2545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2026:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2546,
                  "nodeType": "ExpressionStatement",
                  "src": "2026:37:13"
                }
              ]
            },
            "documentation": null,
            "id": 2548,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2521,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2520,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2508,
                  "src": "1850:14:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1850:14:13"
              }
            ],
            "name": "init",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2510,
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 2548,
                  "src": "1699:23:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2509,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1699:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2512,
                  "name": "document",
                  "nodeType": "VariableDeclaration",
                  "scope": 2548,
                  "src": "1732:22:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2511,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1732:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2514,
                  "name": "start",
                  "nodeType": "VariableDeclaration",
                  "scope": 2548,
                  "src": "1764:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2513,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1764:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2516,
                  "name": "end",
                  "nodeType": "VariableDeclaration",
                  "scope": 2548,
                  "src": "1784:8:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2515,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1784:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2518,
                  "name": "paymentPeriod",
                  "nodeType": "VariableDeclaration",
                  "scope": 2548,
                  "src": "1802:18:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2517,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1802:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1689:137:13"
            },
            "returnParameters": {
              "id": 2522,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1869:0:13"
            },
            "scope": 3166,
            "src": "1676:394:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2559,
              "nodeType": "Block",
              "src": "2171:33:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2556,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2550,
                        "src": "2194:2:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2555,
                      "name": "_getReceiver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3028,
                      "src": "2181:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_struct$_Receiver_$2436_storage_ptr_$",
                        "typeString": "function (string memory) returns (struct Payment.Receiver storage pointer)"
                      }
                    },
                    "id": 2557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2181:16:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receiver_$2436_storage_ptr",
                      "typeString": "struct Payment.Receiver storage pointer"
                    }
                  },
                  "id": 2558,
                  "nodeType": "ExpressionStatement",
                  "src": "2181:16:13"
                }
              ]
            },
            "documentation": null,
            "id": 2560,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2553,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2552,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2508,
                  "src": "2152:14:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2152:14:13"
              }
            ],
            "name": "setReceiver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2550,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2560,
                  "src": "2106:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2549,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2106:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2096:32:13"
            },
            "returnParameters": {
              "id": 2554,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2171:0:13"
            },
            "scope": 3166,
            "src": "2076:128:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2598,
              "nodeType": "Block",
              "src": "2416:252:13",
              "statements": [
                {
                  "assignments": [
                    2574
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2574,
                      "name": "newReference",
                      "nodeType": "VariableDeclaration",
                      "scope": 2598,
                      "src": "2426:30:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                        "typeString": "struct Payment.Reference"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2573,
                        "name": "Reference",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2430,
                        "src": "2426:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                          "typeString": "struct Payment.Reference"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2579,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2576,
                        "name": "receiverId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2562,
                        "src": "2486:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2577,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2564,
                        "src": "2510:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2575,
                      "name": "_getReference",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3081,
                      "src": "2459:13:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_struct$_Reference_$2430_storage_ptr_$",
                        "typeString": "function (string memory,string memory) returns (struct Payment.Reference storage pointer)"
                      }
                    },
                    "id": 2578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2459:72:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                      "typeString": "struct Payment.Reference storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2426:105:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2580,
                        "name": "newReference",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2574,
                        "src": "2542:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                          "typeString": "struct Payment.Reference storage pointer"
                        }
                      },
                      "id": 2582,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "id",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2422,
                      "src": "2542:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2583,
                      "name": "referenceId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2564,
                      "src": "2560:11:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2542:29:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2585,
                  "nodeType": "ExpressionStatement",
                  "src": "2542:29:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2586,
                        "name": "newReference",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2574,
                        "src": "2581:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                          "typeString": "struct Payment.Reference storage pointer"
                        }
                      },
                      "id": 2588,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2424,
                      "src": "2581:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2589,
                      "name": "referenceValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2566,
                      "src": "2602:14:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2581:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2591,
                  "nodeType": "ExpressionStatement",
                  "src": "2581:35:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2592,
                        "name": "newReference",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2574,
                        "src": "2626:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                          "typeString": "struct Payment.Reference storage pointer"
                        }
                      },
                      "id": 2594,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "price",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2426,
                      "src": "2626:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2595,
                      "name": "referencePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2568,
                      "src": "2647:14:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2626:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2597,
                  "nodeType": "ExpressionStatement",
                  "src": "2626:35:13"
                }
              ]
            },
            "documentation": null,
            "id": 2599,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2571,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2570,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2508,
                  "src": "2397:14:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2397:14:13"
              }
            ],
            "name": "setReference",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2562,
                  "name": "receiverId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2599,
                  "src": "2241:24:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2561,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2241:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2564,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2599,
                  "src": "2275:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2563,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2275:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2566,
                  "name": "referenceValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 2599,
                  "src": "2310:28:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2565,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2310:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2568,
                  "name": "referencePrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 2599,
                  "src": "2348:19:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2567,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2348:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2231:142:13"
            },
            "returnParameters": {
              "id": 2572,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2416:0:13"
            },
            "scope": 3166,
            "src": "2210:458:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2646,
              "nodeType": "Block",
              "src": "2923:369:13",
              "statements": [
                {
                  "assignments": [
                    2617
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2617,
                      "name": "newReference",
                      "nodeType": "VariableDeclaration",
                      "scope": 2646,
                      "src": "2933:30:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                        "typeString": "struct Payment.Reference"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2616,
                        "name": "Reference",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2430,
                        "src": "2933:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                          "typeString": "struct Payment.Reference"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2622,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2619,
                        "name": "receiverId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2601,
                        "src": "2993:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2620,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2603,
                        "src": "3017:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2618,
                      "name": "_getReference",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3081,
                      "src": "2966:13:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_struct$_Reference_$2430_storage_ptr_$",
                        "typeString": "function (string memory,string memory) returns (struct Payment.Reference storage pointer)"
                      }
                    },
                    "id": 2621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2966:72:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                      "typeString": "struct Payment.Reference storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2933:105:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2632,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2623,
                        "name": "paymentChecks",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2465,
                        "src": "3049:13:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                          "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                        }
                      },
                      "id": 2625,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2624,
                        "name": "paymentCheckId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2605,
                        "src": "3063:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3049:29:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                        "typeString": "struct Payment.PaymentCheck storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2627,
                          "name": "paymentCheckId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2605,
                          "src": "3107:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2628,
                          "name": "status",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2607,
                          "src": "3135:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2629,
                          "name": "checkedAt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2609,
                          "src": "3155:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2630,
                          "name": "createdAt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2611,
                          "src": "3178:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2626,
                        "name": "PaymentCheck",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2420,
                        "src": "3081:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_PaymentCheck_$2420_storage_ptr_$",
                          "typeString": "type(struct Payment.PaymentCheck storage pointer)"
                        }
                      },
                      "id": 2631,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3081:116:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PaymentCheck_$2420_memory",
                        "typeString": "struct Payment.PaymentCheck memory"
                      }
                    },
                    "src": "3049:148:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                      "typeString": "struct Payment.PaymentCheck storage ref"
                    }
                  },
                  "id": 2633,
                  "nodeType": "ExpressionStatement",
                  "src": "3049:148:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2639,
                        "name": "paymentCheckId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2605,
                        "src": "3233:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2634,
                          "name": "newReference",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2617,
                          "src": "3208:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                            "typeString": "struct Payment.Reference storage pointer"
                          }
                        },
                        "id": 2637,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "checks",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2429,
                        "src": "3208:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 2638,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3208:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                        "typeString": "function (string storage ref) returns (uint256)"
                      }
                    },
                    "id": 2640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3208:40:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2641,
                  "nodeType": "ExpressionStatement",
                  "src": "3208:40:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2643,
                        "name": "CLAUSE_EVENT_TYPE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2408,
                        "src": "3267:17:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2642,
                      "name": "_notify",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1706,
                      "src": "3259:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 2644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3259:26:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2645,
                  "nodeType": "ExpressionStatement",
                  "src": "3259:26:13"
                }
              ]
            },
            "documentation": null,
            "id": 2647,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2614,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2613,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2508,
                  "src": "2904:14:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2904:14:13"
              }
            ],
            "name": "addPaymentCheck",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2612,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2601,
                  "name": "receiverId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2708:24:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2600,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2708:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2603,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2742:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2602,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2742:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2605,
                  "name": "paymentCheckId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2777:28:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2604,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2777:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2607,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2815:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2606,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2815:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2609,
                  "name": "checkedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2836:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2608,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2836:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2611,
                  "name": "createdAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2860:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2610,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2860:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2698:182:13"
            },
            "returnParameters": {
              "id": 2615,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2923:0:13"
            },
            "scope": 3166,
            "src": "2674:618:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2655,
              "nodeType": "Block",
              "src": "3380:45:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2652,
                      "name": "receiversArray",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2447,
                      "src": "3397:14:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 2653,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3397:21:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2651,
                  "id": 2654,
                  "nodeType": "Return",
                  "src": "3390:28:13"
                }
              ]
            },
            "documentation": null,
            "id": 2656,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReceiversSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2648,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3323:2:13"
            },
            "returnParameters": {
              "id": 2651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2650,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2656,
                  "src": "3370:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2649,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3370:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3369:6:13"
            },
            "scope": 3166,
            "src": "3298:127:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2691,
              "nodeType": "Block",
              "src": "3716:290:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2670,
                        "name": "paymentCheckId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2658,
                        "src": "3754:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2669,
                      "name": "_checkPaymentCheckExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3165,
                      "src": "3726:27:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3726:43:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2672,
                  "nodeType": "ExpressionStatement",
                  "src": "3726:43:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2673,
                            "name": "paymentChecks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2465,
                            "src": "3801:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                              "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                            }
                          },
                          "id": 2675,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2674,
                            "name": "paymentCheckId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2658,
                            "src": "3815:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3801:29:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                            "typeString": "struct Payment.PaymentCheck storage ref"
                          }
                        },
                        "id": 2676,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2413,
                        "src": "3801:32:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2677,
                            "name": "paymentChecks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2465,
                            "src": "3847:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                              "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                            }
                          },
                          "id": 2679,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2678,
                            "name": "paymentCheckId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2658,
                            "src": "3861:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3847:29:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                            "typeString": "struct Payment.PaymentCheck storage ref"
                          }
                        },
                        "id": 2680,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "status",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2415,
                        "src": "3847:36:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2681,
                            "name": "paymentChecks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2465,
                            "src": "3897:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                              "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                            }
                          },
                          "id": 2683,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2682,
                            "name": "paymentCheckId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2658,
                            "src": "3911:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3897:29:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                            "typeString": "struct Payment.PaymentCheck storage ref"
                          }
                        },
                        "id": 2684,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "checkedAt",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2417,
                        "src": "3897:39:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2685,
                            "name": "paymentChecks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2465,
                            "src": "3950:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                              "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                            }
                          },
                          "id": 2687,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2686,
                            "name": "paymentCheckId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2658,
                            "src": "3964:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3950:29:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                            "typeString": "struct Payment.PaymentCheck storage ref"
                          }
                        },
                        "id": 2688,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createdAt",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2419,
                        "src": "3950:39:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2689,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3787:212:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_storage_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(string storage ref,uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 2668,
                  "id": 2690,
                  "nodeType": "Return",
                  "src": "3780:219:13"
                }
              ]
            },
            "documentation": null,
            "id": 2692,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPaymentCheckById",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2658,
                  "name": "paymentCheckId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2692,
                  "src": "3511:28:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2657,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3511:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3501:44:13"
            },
            "returnParameters": {
              "id": 2668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2661,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2692,
                  "src": "3604:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2660,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3604:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2663,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2692,
                  "src": "3634:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2662,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3634:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2665,
                  "name": "checkedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2692,
                  "src": "3659:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2664,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3659:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2667,
                  "name": "createdAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2692,
                  "src": "3687:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2666,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3687:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3590:121:13"
            },
            "scope": 3166,
            "src": "3473:533:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2734,
              "nodeType": "Block",
              "src": "4336:451:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2706,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2694,
                        "src": "4400:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2707,
                                "name": "references",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2461,
                                "src": "4425:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                  "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                }
                              },
                              "id": 2709,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2708,
                                "name": "referenceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2694,
                                "src": "4436:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4425:23:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                "typeString": "struct Payment.Reference storage ref"
                              }
                            },
                            "id": 2710,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "checks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2429,
                            "src": "4425:30:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 2711,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4425:37:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4465:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "4425:41:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2705,
                      "name": "_checkPaymentCheckFromReferenceExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3146,
                      "src": "4346:40:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,uint256) view"
                      }
                    },
                    "id": 2714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4346:130:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2715,
                  "nodeType": "ExpressionStatement",
                  "src": "4346:130:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2717,
                            "name": "paymentChecks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2465,
                            "src": "4527:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                              "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                            }
                          },
                          "id": 2730,
                          "indexExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2718,
                                  "name": "references",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2461,
                                  "src": "4558:10:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                    "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                  }
                                },
                                "id": 2720,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2719,
                                  "name": "referenceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2694,
                                  "src": "4590:11:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4558:61:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                  "typeString": "struct Payment.Reference storage ref"
                                }
                              },
                              "id": 2721,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "checks",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2429,
                              "src": "4558:68:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            "id": 2729,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2722,
                                      "name": "references",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2461,
                                      "src": "4648:10:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                        "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                      }
                                    },
                                    "id": 2724,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2723,
                                      "name": "referenceId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2694,
                                      "src": "4684:11:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4648:69:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                      "typeString": "struct Payment.Reference storage ref"
                                    }
                                  },
                                  "id": 2725,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "checks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2429,
                                  "src": "4648:76:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                    "typeString": "string storage ref[] storage ref"
                                  }
                                },
                                "id": 2726,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4648:83:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4734:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4648:87:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4558:195:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4527:240:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                            "typeString": "struct Payment.PaymentCheck storage ref"
                          }
                        },
                        "id": 2731,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2413,
                        "src": "4527:243:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      ],
                      "id": 2716,
                      "name": "getPaymentCheckById",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2692,
                      "src": "4494:19:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (string memory) view returns (string memory,uint256,uint256,uint256)"
                      }
                    },
                    "id": 2732,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4494:286:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(string memory,uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 2704,
                  "id": 2733,
                  "nodeType": "Return",
                  "src": "4487:293:13"
                }
              ]
            },
            "documentation": null,
            "id": 2735,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLastPaymentCheckFromReference",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2694,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "4134:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2693,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4134:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4124:41:13"
            },
            "returnParameters": {
              "id": 2704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2697,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "4224:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2696,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4224:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2699,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "4254:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2698,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4254:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2701,
                  "name": "checkedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "4279:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2700,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4279:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2703,
                  "name": "createdAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "4307:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2702,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4307:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4210:121:13"
            },
            "scope": 3166,
            "src": "4083:704:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2809,
              "nodeType": "Block",
              "src": "5186:749:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2753,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2737,
                        "src": "5221:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2752,
                      "name": "_checkReferenceExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3100,
                      "src": "5196:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5196:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2755,
                  "nodeType": "ExpressionStatement",
                  "src": "5196:37:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2763,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2757,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2739,
                          "src": "5265:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2758,
                                "name": "references",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2461,
                                "src": "5273:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                  "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                }
                              },
                              "id": 2760,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2759,
                                "name": "referenceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2737,
                                "src": "5284:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5273:23:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                "typeString": "struct Payment.Reference storage ref"
                              }
                            },
                            "id": 2761,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "checks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2429,
                            "src": "5273:30:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 2762,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5273:37:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5265:45:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f766572666c6f77656420696e646578",
                        "id": 2764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5324:18:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        },
                        "value": "Overflowed index"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        }
                      ],
                      "id": 2756,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "5244:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5244:108:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2766,
                  "nodeType": "ExpressionStatement",
                  "src": "5244:108:13"
                },
                {
                  "assignments": [
                    2768
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2768,
                      "name": "thereIsMore",
                      "nodeType": "VariableDeclaration",
                      "scope": 2809,
                      "src": "5363:16:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2767,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5363:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2770,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 2769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5382:5:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5363:24:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2771,
                            "name": "references",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2461,
                            "src": "5402:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                              "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                            }
                          },
                          "id": 2773,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2772,
                            "name": "referenceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2737,
                            "src": "5413:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5402:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage",
                            "typeString": "struct Payment.Reference storage ref"
                          }
                        },
                        "id": 2774,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "checks",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2429,
                        "src": "5402:30:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 2775,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5402:37:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2778,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2776,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2739,
                        "src": "5442:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5450:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5442:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5402:49:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2784,
                  "nodeType": "IfStatement",
                  "src": "5398:85:13",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2782,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2780,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2768,
                        "src": "5465:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5479:4:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "5465:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 2783,
                    "nodeType": "ExpressionStatement",
                    "src": "5465:18:13"
                  }
                },
                {
                  "assignments": [
                    2786,
                    2788,
                    2790,
                    2792
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2786,
                      "name": "paymentCheckId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2809,
                      "src": "5508:28:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2785,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "5508:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2788,
                      "name": "paymentCheckStatus",
                      "nodeType": "VariableDeclaration",
                      "scope": 2809,
                      "src": "5550:23:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2787,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5550:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2790,
                      "name": "paymentCheckCheckedAt",
                      "nodeType": "VariableDeclaration",
                      "scope": 2809,
                      "src": "5587:26:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2789,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5587:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2792,
                      "name": "paymentCheckCreatedAt",
                      "nodeType": "VariableDeclaration",
                      "scope": 2809,
                      "src": "5627:26:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2791,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5627:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2801,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2794,
                              "name": "references",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2461,
                              "src": "5699:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                              }
                            },
                            "id": 2796,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2795,
                              "name": "referenceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2737,
                              "src": "5710:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5699:23:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Reference_$2430_storage",
                              "typeString": "struct Payment.Reference storage ref"
                            }
                          },
                          "id": 2797,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "checks",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2429,
                          "src": "5699:30:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                            "typeString": "string storage ref[] storage ref"
                          }
                        },
                        "id": 2799,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2798,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2739,
                          "src": "5730:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5699:37:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      ],
                      "id": 2793,
                      "name": "getPaymentCheckById",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2692,
                      "src": "5666:19:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (string memory) view returns (string memory,uint256,uint256,uint256)"
                      }
                    },
                    "id": 2800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5666:80:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(string memory,uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5494:252:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2802,
                        "name": "paymentCheckId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2786,
                        "src": "5777:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2803,
                        "name": "paymentCheckStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2788,
                        "src": "5805:18:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2804,
                        "name": "paymentCheckCheckedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2790,
                        "src": "5837:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2805,
                        "name": "paymentCheckCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2792,
                        "src": "5872:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2806,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2768,
                        "src": "5907:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2807,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5763:165:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$",
                      "typeString": "tuple(string memory,uint256,uint256,uint256,bool)"
                    }
                  },
                  "functionReturnParameters": 2751,
                  "id": 2808,
                  "nodeType": "Return",
                  "src": "5757:171:13"
                }
              ]
            },
            "documentation": null,
            "id": 2810,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPaymentCheckFromReference",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2737,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "4941:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2736,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4941:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2739,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "4976:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2738,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4976:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4931:61:13"
            },
            "returnParameters": {
              "id": 2751,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2742,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "5051:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2741,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5051:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2744,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "5081:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2743,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5081:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2746,
                  "name": "checkedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "5106:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2745,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5106:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2748,
                  "name": "createdAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "5134:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2747,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5134:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2750,
                  "name": "more",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "5162:9:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2749,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5162:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5037:144:13"
            },
            "scope": 3166,
            "src": "4894:1041:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2827,
              "nodeType": "Block",
              "src": "6144:109:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2818,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2812,
                        "src": "6179:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2817,
                      "name": "_checkReferenceExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3100,
                      "src": "6154:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6154:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2820,
                  "nodeType": "ExpressionStatement",
                  "src": "6154:37:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2821,
                          "name": "references",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2461,
                          "src": "6209:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                            "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                          }
                        },
                        "id": 2823,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2822,
                          "name": "referenceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2812,
                          "src": "6220:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6209:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage",
                          "typeString": "struct Payment.Reference storage ref"
                        }
                      },
                      "id": 2824,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checks",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2429,
                      "src": "6209:30:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 2825,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "6209:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2816,
                  "id": 2826,
                  "nodeType": "Return",
                  "src": "6202:44:13"
                }
              ]
            },
            "documentation": null,
            "id": 2828,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPaymentCheckSizeFromReference",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2813,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2812,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2828,
                  "src": "6052:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2811,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6052:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6042:41:13"
            },
            "returnParameters": {
              "id": 2816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2815,
                  "name": "size",
                  "nodeType": "VariableDeclaration",
                  "scope": 2828,
                  "src": "6129:9:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2814,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6129:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6128:11:13"
            },
            "scope": 3166,
            "src": "6001:252:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2857,
              "nodeType": "Block",
              "src": "6511:207:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2840,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2830,
                        "src": "6546:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2839,
                      "name": "_checkReferenceExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3100,
                      "src": "6521:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6521:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2842,
                  "nodeType": "ExpressionStatement",
                  "src": "6521:37:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2843,
                            "name": "references",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2461,
                            "src": "6589:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                              "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                            }
                          },
                          "id": 2845,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2844,
                            "name": "referenceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2830,
                            "src": "6600:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6589:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage",
                            "typeString": "struct Payment.Reference storage ref"
                          }
                        },
                        "id": 2846,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2422,
                        "src": "6589:26:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2847,
                            "name": "references",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2461,
                            "src": "6629:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                              "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                            }
                          },
                          "id": 2849,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2848,
                            "name": "referenceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2830,
                            "src": "6640:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6629:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage",
                            "typeString": "struct Payment.Reference storage ref"
                          }
                        },
                        "id": 2850,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2424,
                        "src": "6629:29:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2851,
                            "name": "references",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2461,
                            "src": "6672:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                              "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                            }
                          },
                          "id": 2853,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2852,
                            "name": "referenceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2830,
                            "src": "6683:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6672:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage",
                            "typeString": "struct Payment.Reference storage ref"
                          }
                        },
                        "id": 2854,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "price",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2426,
                        "src": "6672:29:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2855,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6575:136:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_storage_$_t_string_storage_$_t_uint256_$",
                      "typeString": "tuple(string storage ref,string storage ref,uint256)"
                    }
                  },
                  "functionReturnParameters": 2838,
                  "id": 2856,
                  "nodeType": "Return",
                  "src": "6569:142:13"
                }
              ]
            },
            "documentation": null,
            "id": 2858,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReferenceById",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2830,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2858,
                  "src": "6333:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2829,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6333:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6323:41:13"
            },
            "returnParameters": {
              "id": 2838,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2833,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2858,
                  "src": "6423:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2832,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6423:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2835,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2858,
                  "src": "6453:19:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2834,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6453:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2837,
                  "name": "price",
                  "nodeType": "VariableDeclaration",
                  "scope": 2858,
                  "src": "6486:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2836,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6486:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6409:97:13"
            },
            "scope": 3166,
            "src": "6298:420:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2927,
              "nodeType": "Block",
              "src": "7081:656:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2874,
                        "name": "receiverId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2860,
                        "src": "7115:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2873,
                      "name": "_checkReceiverExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3119,
                      "src": "7091:23:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7091:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2876,
                  "nodeType": "ExpressionStatement",
                  "src": "7091:35:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2884,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2878,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2862,
                          "src": "7158:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2879,
                                "name": "receivers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2457,
                                "src": "7166:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                  "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                                }
                              },
                              "id": 2881,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2880,
                                "name": "receiverId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2860,
                                "src": "7176:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7166:21:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                                "typeString": "struct Payment.Receiver storage ref"
                              }
                            },
                            "id": 2882,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "references",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2435,
                            "src": "7166:32:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 2883,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7166:39:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7158:47:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f766572666c6f77656420696e646578",
                        "id": 2885,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7219:18:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        },
                        "value": "Overflowed index"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        }
                      ],
                      "id": 2877,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "7137:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7137:110:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2887,
                  "nodeType": "ExpressionStatement",
                  "src": "7137:110:13"
                },
                {
                  "assignments": [
                    2889
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2889,
                      "name": "thereIsMore",
                      "nodeType": "VariableDeclaration",
                      "scope": 2927,
                      "src": "7258:16:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2888,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "7258:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2891,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 2890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7277:5:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7258:24:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2892,
                            "name": "receivers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2457,
                            "src": "7297:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                              "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                            }
                          },
                          "id": 2894,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2893,
                            "name": "receiverId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2860,
                            "src": "7307:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7297:21:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                            "typeString": "struct Payment.Receiver storage ref"
                          }
                        },
                        "id": 2895,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "references",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2435,
                        "src": "7297:32:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 2896,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7297:39:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2899,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2897,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2862,
                        "src": "7339:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7347:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "7339:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7297:51:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2905,
                  "nodeType": "IfStatement",
                  "src": "7293:87:13",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2903,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2901,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2889,
                        "src": "7362:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7376:4:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "7362:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 2904,
                    "nodeType": "ExpressionStatement",
                    "src": "7362:18:13"
                  }
                },
                {
                  "assignments": [
                    2907,
                    2909,
                    2911
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2907,
                      "name": "referenceId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2927,
                      "src": "7405:25:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2906,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "7405:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2909,
                      "name": "referenceValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 2927,
                      "src": "7444:28:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2908,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "7444:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2911,
                      "name": "referencePrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 2927,
                      "src": "7486:19:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2910,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7486:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2920,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2913,
                              "name": "receivers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2457,
                              "src": "7548:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                              }
                            },
                            "id": 2915,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2914,
                              "name": "receiverId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2860,
                              "src": "7558:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7548:21:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                              "typeString": "struct Payment.Receiver storage ref"
                            }
                          },
                          "id": 2916,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "references",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2435,
                          "src": "7548:32:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                            "typeString": "string storage ref[] storage ref"
                          }
                        },
                        "id": 2918,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2917,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2862,
                          "src": "7581:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7548:39:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      ],
                      "id": 2912,
                      "name": "getReferenceById",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2858,
                      "src": "7518:16:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$",
                        "typeString": "function (string memory) view returns (string memory,string memory,uint256)"
                      }
                    },
                    "id": 2919,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7518:79:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$",
                      "typeString": "tuple(string memory,string memory,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7391:206:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2921,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2907,
                        "src": "7628:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2922,
                        "name": "referenceValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2909,
                        "src": "7653:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2923,
                        "name": "referencePrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2911,
                        "src": "7681:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2924,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2889,
                        "src": "7709:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2925,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7614:116:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$",
                      "typeString": "tuple(string memory,string memory,uint256,bool)"
                    }
                  },
                  "functionReturnParameters": 2872,
                  "id": 2926,
                  "nodeType": "Return",
                  "src": "7608:122:13"
                }
              ]
            },
            "documentation": null,
            "id": 2928,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReferenceFromReceiver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2860,
                  "name": "receiverId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "6861:24:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2859,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6861:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2862,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "6895:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2861,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6895:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6851:60:13"
            },
            "returnParameters": {
              "id": 2872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2865,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "6970:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2864,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6970:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2867,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "7000:19:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2866,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7000:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2869,
                  "name": "price",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "7033:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2868,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7033:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2871,
                  "name": "more",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "7057:9:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2870,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7057:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6956:120:13"
            },
            "scope": 3166,
            "src": "6818:919:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2945,
              "nodeType": "Block",
              "src": "7922:109:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2936,
                        "name": "receiverId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2930,
                        "src": "7956:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2935,
                      "name": "_checkReceiverExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3119,
                      "src": "7932:23:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7932:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2938,
                  "nodeType": "ExpressionStatement",
                  "src": "7932:35:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2939,
                          "name": "receivers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2457,
                          "src": "7985:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                            "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                          }
                        },
                        "id": 2941,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2940,
                          "name": "receiverId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2930,
                          "src": "7995:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7985:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                          "typeString": "struct Payment.Receiver storage ref"
                        }
                      },
                      "id": 2942,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "references",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2435,
                      "src": "7985:32:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 2943,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "7985:39:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2934,
                  "id": 2944,
                  "nodeType": "Return",
                  "src": "7978:46:13"
                }
              ]
            },
            "documentation": null,
            "id": 2946,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReferenceSizeFromReceiver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2930,
                  "name": "receiverId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2946,
                  "src": "7831:24:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2929,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7831:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7821:40:13"
            },
            "returnParameters": {
              "id": 2934,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2933,
                  "name": "size",
                  "nodeType": "VariableDeclaration",
                  "scope": 2946,
                  "src": "7907:9:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2932,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7907:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7906:11:13"
            },
            "scope": 3166,
            "src": "7784:247:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2984,
              "nodeType": "Block",
              "src": "8229:311:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2956,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2948,
                          "src": "8260:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2957,
                            "name": "receiversArray",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2447,
                            "src": "8268:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 2958,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8268:21:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8260:29:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f766572666c6f77656420696e646578",
                        "id": 2960,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8303:18:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        },
                        "value": "Overflowed index"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        }
                      ],
                      "id": 2955,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "8239:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8239:92:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2962,
                  "nodeType": "ExpressionStatement",
                  "src": "8239:92:13"
                },
                {
                  "assignments": [
                    2964
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2964,
                      "name": "thereIsMore",
                      "nodeType": "VariableDeclaration",
                      "scope": 2984,
                      "src": "8342:16:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2963,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "8342:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2966,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 2965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8361:5:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8342:24:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2972,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2967,
                        "name": "receiversArray",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2447,
                        "src": "8381:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 2968,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8381:21:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2971,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2969,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2948,
                        "src": "8405:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8413:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "8405:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8381:33:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2977,
                  "nodeType": "IfStatement",
                  "src": "8377:69:13",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2975,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2973,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2964,
                        "src": "8428:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2974,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8442:4:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "8428:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 2976,
                    "nodeType": "ExpressionStatement",
                    "src": "8428:18:13"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2978,
                          "name": "receiversArray",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2447,
                          "src": "8477:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                            "typeString": "string storage ref[] storage ref"
                          }
                        },
                        "id": 2980,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2979,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2948,
                          "src": "8492:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8477:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2981,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2964,
                        "src": "8512:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2982,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "8463:70:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_storage_$_t_bool_$",
                      "typeString": "tuple(string storage ref,bool)"
                    }
                  },
                  "functionReturnParameters": 2954,
                  "id": 2983,
                  "nodeType": "Return",
                  "src": "8457:76:13"
                }
              ]
            },
            "documentation": null,
            "id": 2985,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReceiverId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2948,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 2985,
                  "src": "8100:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2947,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8100:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8090:26:13"
            },
            "returnParameters": {
              "id": 2954,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2951,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2985,
                  "src": "8175:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2950,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8175:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2953,
                  "name": "more",
                  "nodeType": "VariableDeclaration",
                  "scope": 2985,
                  "src": "8205:9:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2952,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8205:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8161:63:13"
            },
            "scope": 3166,
            "src": "8068:472:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3027,
              "nodeType": "Block",
              "src": "8655:231:13",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3000,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2993,
                                "name": "receivers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2457,
                                "src": "8675:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                  "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                                }
                              },
                              "id": 2995,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2994,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2987,
                                "src": "8685:2:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8675:13:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                                "typeString": "struct Payment.Receiver storage ref"
                              }
                            },
                            "id": 2996,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2432,
                            "src": "8675:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          ],
                          "id": 2992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8669:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 2997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8669:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes storage pointer"
                        }
                      },
                      "id": 2998,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8669:30:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2999,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8703:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8669:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3022,
                  "nodeType": "IfStatement",
                  "src": "8665:184:13",
                  "trueBody": {
                    "id": 3021,
                    "nodeType": "Block",
                    "src": "8706:143:13",
                    "statements": [
                      {
                        "assignments": [
                          3004
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3004,
                            "name": "tmpString",
                            "nodeType": "VariableDeclaration",
                            "scope": 3021,
                            "src": "8721:25:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                              "typeString": "string[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 3002,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "8721:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string"
                                }
                              },
                              "id": 3003,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "8721:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                "typeString": "string[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3005,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8721:25:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3006,
                              "name": "receivers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2457,
                              "src": "8761:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                              }
                            },
                            "id": 3008,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3007,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2987,
                              "src": "8771:2:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8761:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                              "typeString": "struct Payment.Receiver storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3010,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2987,
                                "src": "8786:2:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3011,
                                "name": "tmpString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3004,
                                "src": "8790:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                  "typeString": "string memory[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                  "typeString": "string memory[] memory"
                                }
                              ],
                              "id": 3009,
                              "name": "Receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2436,
                              "src": "8777:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Receiver_$2436_storage_ptr_$",
                                "typeString": "type(struct Payment.Receiver storage pointer)"
                              }
                            },
                            "id": 3012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8777:23:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receiver_$2436_memory",
                              "typeString": "struct Payment.Receiver memory"
                            }
                          },
                          "src": "8761:39:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                            "typeString": "struct Payment.Receiver storage ref"
                          }
                        },
                        "id": 3014,
                        "nodeType": "ExpressionStatement",
                        "src": "8761:39:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3018,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2987,
                              "src": "8835:2:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3015,
                              "name": "receiversArray",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2447,
                              "src": "8815:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            "id": 3017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8815:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                              "typeString": "function (string storage ref) returns (uint256)"
                            }
                          },
                          "id": 3019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8815:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3020,
                        "nodeType": "ExpressionStatement",
                        "src": "8815:23:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3023,
                      "name": "receivers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2457,
                      "src": "8866:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                        "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                      }
                    },
                    "id": 3025,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3024,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2987,
                      "src": "8876:2:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8866:13:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                      "typeString": "struct Payment.Receiver storage ref"
                    }
                  },
                  "functionReturnParameters": 2991,
                  "id": 3026,
                  "nodeType": "Return",
                  "src": "8859:20:13"
                }
              ]
            },
            "documentation": null,
            "id": 3028,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getReceiver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2988,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2987,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3028,
                  "src": "8577:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2986,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8577:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8567:32:13"
            },
            "returnParameters": {
              "id": 2991,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2990,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3028,
                  "src": "8633:16:13",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Receiver_$2436_storage_ptr",
                    "typeString": "struct Payment.Receiver"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2989,
                    "name": "Receiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2436,
                    "src": "8633:8:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receiver_$2436_storage_ptr",
                      "typeString": "struct Payment.Receiver"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8632:18:13"
            },
            "scope": 3166,
            "src": "8546:340:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3080,
              "nodeType": "Block",
              "src": "9046:432:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3038,
                        "name": "receiverId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3030,
                        "src": "9069:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3037,
                      "name": "_getReceiver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3028,
                      "src": "9056:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_struct$_Receiver_$2436_storage_ptr_$",
                        "typeString": "function (string memory) returns (struct Payment.Receiver storage pointer)"
                      }
                    },
                    "id": 3039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9056:24:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receiver_$2436_storage_ptr",
                      "typeString": "struct Payment.Receiver storage pointer"
                    }
                  },
                  "id": 3040,
                  "nodeType": "ExpressionStatement",
                  "src": "9056:24:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3042,
                                "name": "references",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2461,
                                "src": "9101:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                  "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                }
                              },
                              "id": 3044,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3043,
                                "name": "referenceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3032,
                                "src": "9112:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9101:23:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                "typeString": "struct Payment.Reference storage ref"
                              }
                            },
                            "id": 3045,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2422,
                            "src": "9101:26:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          ],
                          "id": 3041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9095:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 3046,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9095:33:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes storage pointer"
                        }
                      },
                      "id": 3047,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9095:40:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3048,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9139:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9095:45:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3075,
                  "nodeType": "IfStatement",
                  "src": "9091:340:13",
                  "trueBody": {
                    "id": 3074,
                    "nodeType": "Block",
                    "src": "9142:289:13",
                    "statements": [
                      {
                        "assignments": [
                          3053
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3053,
                            "name": "tmpPaymentChecks",
                            "nodeType": "VariableDeclaration",
                            "scope": 3074,
                            "src": "9157:32:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                              "typeString": "string[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 3051,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "9157:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string"
                                }
                              },
                              "id": 3052,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "9157:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                "typeString": "string[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3054,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9157:32:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3055,
                              "name": "references",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2461,
                              "src": "9204:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                              }
                            },
                            "id": 3057,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3056,
                              "name": "referenceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3032,
                              "src": "9215:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9204:23:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Reference_$2430_storage",
                              "typeString": "struct Payment.Reference storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3059,
                                "name": "referenceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3032,
                                "src": "9257:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 3060,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9286:2:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3061,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9306:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "id": 3062,
                                "name": "tmpPaymentChecks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3053,
                                "src": "9325:16:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                  "typeString": "string memory[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                  "typeString": "string memory[] memory"
                                }
                              ],
                              "id": 3058,
                              "name": "Reference",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2430,
                              "src": "9230:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Reference_$2430_storage_ptr_$",
                                "typeString": "type(struct Payment.Reference storage pointer)"
                              }
                            },
                            "id": 3063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9230:125:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Reference_$2430_memory",
                              "typeString": "struct Payment.Reference memory"
                            }
                          },
                          "src": "9204:151:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage",
                            "typeString": "struct Payment.Reference storage ref"
                          }
                        },
                        "id": 3065,
                        "nodeType": "ExpressionStatement",
                        "src": "9204:151:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3071,
                              "name": "referenceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3032,
                              "src": "9408:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3066,
                                  "name": "receivers",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2457,
                                  "src": "9370:9:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                    "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                                  }
                                },
                                "id": 3068,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3067,
                                  "name": "receiverId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3030,
                                  "src": "9380:10:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9370:21:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                                  "typeString": "struct Payment.Receiver storage ref"
                                }
                              },
                              "id": 3069,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "references",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2435,
                              "src": "9370:32:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            "id": 3070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9370:37:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                              "typeString": "function (string storage ref) returns (uint256)"
                            }
                          },
                          "id": 3072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9370:50:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3073,
                        "nodeType": "ExpressionStatement",
                        "src": "9370:50:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3076,
                      "name": "references",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2461,
                      "src": "9448:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                        "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                      }
                    },
                    "id": 3078,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3077,
                      "name": "referenceId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3032,
                      "src": "9459:11:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9448:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Reference_$2430_storage",
                      "typeString": "struct Payment.Reference storage ref"
                    }
                  },
                  "functionReturnParameters": 3036,
                  "id": 3079,
                  "nodeType": "Return",
                  "src": "9441:30:13"
                }
              ]
            },
            "documentation": null,
            "id": 3081,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getReference",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3033,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3030,
                  "name": "receiverId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3081,
                  "src": "8924:24:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3029,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8924:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3032,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3081,
                  "src": "8958:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3031,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8958:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8914:75:13"
            },
            "returnParameters": {
              "id": 3036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3035,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3081,
                  "src": "9023:17:13",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                    "typeString": "struct Payment.Reference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3034,
                    "name": "Reference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2430,
                    "src": "9023:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                      "typeString": "struct Payment.Reference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9022:19:13"
            },
            "scope": 3166,
            "src": "8892:586:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3099,
              "nodeType": "Block",
              "src": "9583:128:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3088,
                                    "name": "references",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2461,
                                    "src": "9620:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                      "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                    }
                                  },
                                  "id": 3090,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3089,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3083,
                                    "src": "9631:2:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9620:14:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                    "typeString": "struct Payment.Reference storage ref"
                                  }
                                },
                                "id": 3091,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2422,
                                "src": "9620:17:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              ],
                              "id": 3087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9614:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": "bytes"
                            },
                            "id": 3092,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9614:24:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes storage pointer"
                            }
                          },
                          "id": 3093,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9614:31:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9649:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "9614:36:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686973207265666572656e636520646f65736e2774206578697374",
                        "id": 3096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9664:30:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_01fab1e488e7961b149fc9104735c438e9d741703043a169416ba397efb06b5b",
                          "typeString": "literal_string \"This reference doesn't exist\""
                        },
                        "value": "This reference doesn't exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_01fab1e488e7961b149fc9104735c438e9d741703043a169416ba397efb06b5b",
                          "typeString": "literal_string \"This reference doesn't exist\""
                        }
                      ],
                      "id": 3086,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "9593:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9593:111:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3098,
                  "nodeType": "ExpressionStatement",
                  "src": "9593:111:13"
                }
              ]
            },
            "documentation": null,
            "id": 3100,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkReferenceExistence",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3084,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3083,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3100,
                  "src": "9527:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3082,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9527:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9517:32:13"
            },
            "returnParameters": {
              "id": 3085,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9583:0:13"
            },
            "scope": 3166,
            "src": "9484:227:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3118,
              "nodeType": "Block",
              "src": "9815:126:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3107,
                                    "name": "receivers",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2457,
                                    "src": "9852:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                      "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                                    }
                                  },
                                  "id": 3109,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3108,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3102,
                                    "src": "9862:2:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9852:13:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                                    "typeString": "struct Payment.Receiver storage ref"
                                  }
                                },
                                "id": 3110,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2432,
                                "src": "9852:16:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              ],
                              "id": 3106,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9846:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": "bytes"
                            },
                            "id": 3111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9846:23:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes storage pointer"
                            }
                          },
                          "id": 3112,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9846:30:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9880:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "9846:35:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5468697320726563656976657220646f65736e2774206578697374",
                        "id": 3115,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9895:29:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7687c227db7480629f4d099430f17757b5f11764d062bfb1ab86e828d7be9075",
                          "typeString": "literal_string \"This receiver doesn't exist\""
                        },
                        "value": "This receiver doesn't exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7687c227db7480629f4d099430f17757b5f11764d062bfb1ab86e828d7be9075",
                          "typeString": "literal_string \"This receiver doesn't exist\""
                        }
                      ],
                      "id": 3105,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "9825:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9825:109:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3117,
                  "nodeType": "ExpressionStatement",
                  "src": "9825:109:13"
                }
              ]
            },
            "documentation": null,
            "id": 3119,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkReceiverExistence",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3102,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3119,
                  "src": "9759:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3101,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9759:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9749:32:13"
            },
            "returnParameters": {
              "id": 3104,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9815:0:13"
            },
            "scope": 3166,
            "src": "9717:224:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3145,
              "nodeType": "Block",
              "src": "10091:200:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3127,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3121,
                        "src": "10126:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3126,
                      "name": "_checkReferenceExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3100,
                      "src": "10101:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 3128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10101:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3129,
                  "nodeType": "ExpressionStatement",
                  "src": "10101:37:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3132,
                                      "name": "references",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2461,
                                      "src": "10176:10:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                        "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                      }
                                    },
                                    "id": 3134,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3133,
                                      "name": "referenceId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3121,
                                      "src": "10187:11:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10176:23:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                      "typeString": "struct Payment.Reference storage ref"
                                    }
                                  },
                                  "id": 3135,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "checks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2429,
                                  "src": "10176:30:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                    "typeString": "string storage ref[] storage ref"
                                  }
                                },
                                "id": 3137,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3136,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3123,
                                  "src": "10207:5:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10176:37:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              ],
                              "id": 3131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10170:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": "bytes"
                            },
                            "id": 3138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10170:44:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes storage pointer"
                            }
                          },
                          "id": 3139,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10170:51:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10225:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10170:56:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686973207061796d656e7420636865636b20646f65736e2774206578697374",
                        "id": 3142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10240:34:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_365b95f4857792489b9254d025f167dbd09b4e90fdf251c4697b22d474d041ae",
                          "typeString": "literal_string \"This payment check doesn't exist\""
                        },
                        "value": "This payment check doesn't exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_365b95f4857792489b9254d025f167dbd09b4e90fdf251c4697b22d474d041ae",
                          "typeString": "literal_string \"This payment check doesn't exist\""
                        }
                      ],
                      "id": 3130,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "10149:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10149:135:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3144,
                  "nodeType": "ExpressionStatement",
                  "src": "10149:135:13"
                }
              ]
            },
            "documentation": null,
            "id": 3146,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkPaymentCheckFromReferenceExistence",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3124,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3121,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3146,
                  "src": "10006:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3120,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10006:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3123,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 3146,
                  "src": "10041:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3122,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10041:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9996:61:13"
            },
            "returnParameters": {
              "id": 3125,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10091:0:13"
            },
            "scope": 3166,
            "src": "9947:344:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3164,
              "nodeType": "Block",
              "src": "10399:135:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3153,
                                    "name": "paymentChecks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2465,
                                    "src": "10436:13:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                                      "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                                    }
                                  },
                                  "id": 3155,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3154,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3148,
                                    "src": "10450:2:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10436:17:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                                    "typeString": "struct Payment.PaymentCheck storage ref"
                                  }
                                },
                                "id": 3156,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2413,
                                "src": "10436:20:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              ],
                              "id": 3152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10430:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": "bytes"
                            },
                            "id": 3157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10430:27:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes storage pointer"
                            }
                          },
                          "id": 3158,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10430:34:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10468:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10430:39:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686973207061796d656e7420636865636b20646f65736e2774206578697374",
                        "id": 3161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10483:34:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_365b95f4857792489b9254d025f167dbd09b4e90fdf251c4697b22d474d041ae",
                          "typeString": "literal_string \"This payment check doesn't exist\""
                        },
                        "value": "This payment check doesn't exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_365b95f4857792489b9254d025f167dbd09b4e90fdf251c4697b22d474d041ae",
                          "typeString": "literal_string \"This payment check doesn't exist\""
                        }
                      ],
                      "id": 3151,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "10409:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10409:118:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3163,
                  "nodeType": "ExpressionStatement",
                  "src": "10409:118:13"
                }
              ]
            },
            "documentation": null,
            "id": 3165,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkPaymentCheckExistence",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3149,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3148,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3165,
                  "src": "10343:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3147,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10343:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10333:32:13"
            },
            "returnParameters": {
              "id": 3150,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10399:0:13"
            },
            "scope": 3166,
            "src": "10297:237:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 3167,
        "src": "212:10324:13"
      }
    ],
    "src": "0:10537:13"
  },
  "legacyAST": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Payment.sol",
    "exportedSymbols": {
      "Payment": [
        3166
      ]
    },
    "id": 3167,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2401,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:13"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Clause.sol",
        "file": "./Clause.sol",
        "id": 2402,
        "nodeType": "ImportDirective",
        "scope": 3167,
        "sourceUnit": 1708,
        "src": "187:22:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": [
              {
                "argumentTypes": null,
                "hexValue": "7061796d656e742d636c617573652d6e6f74696669657273",
                "id": 2404,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "string",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "244:26:13",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_stringliteral_757e3c91c30725599892de8769997ed1c7b74e26fe73637ce24a95ccb40bd258",
                  "typeString": "literal_string \"payment-clause-notifiers\""
                },
                "value": "payment-clause-notifiers"
              }
            ],
            "baseName": {
              "contractScope": null,
              "id": 2403,
              "name": "Clause",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1707,
              "src": "232:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Clause_$1707",
                "typeString": "contract Clause"
              }
            },
            "id": 2405,
            "nodeType": "InheritanceSpecifier",
            "src": "232:40:13"
          }
        ],
        "contractDependencies": [
          1707
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3166,
        "linearizedBaseContracts": [
          3166,
          1707
        ],
        "name": "Payment",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 2408,
            "name": "CLAUSE_EVENT_TYPE",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "279:64:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2406,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "279:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7061796d656e745f636865636b2e6164646564",
              "id": 2407,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "322:21:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2889ca0639ae00927f6713561bf60d7d68ca787d04db32b09ccc9d57f1c70036",
                "typeString": "literal_string \"payment_check.added\""
              },
              "value": "payment_check.added"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2411,
            "name": "CREATION_EVENT_TYPE",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "349:69:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2409,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "349:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7061796d656e745f636c617573652e63726561746564",
              "id": 2410,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "394:24:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8692ad01fe67ad9dfd2c7e5cd12c282c30db07c2d37128c1b7a41fe4639ff20d",
                "typeString": "literal_string \"payment_clause.created\""
              },
              "value": "payment_clause.created"
            },
            "visibility": "public"
          },
          {
            "canonicalName": "Payment.PaymentCheck",
            "id": 2420,
            "members": [
              {
                "constant": false,
                "id": 2413,
                "name": "id",
                "nodeType": "VariableDeclaration",
                "scope": 2420,
                "src": "455:9:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2412,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "455:6:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2415,
                "name": "status",
                "nodeType": "VariableDeclaration",
                "scope": 2420,
                "src": "474:11:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2414,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "474:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2417,
                "name": "checkedAt",
                "nodeType": "VariableDeclaration",
                "scope": 2420,
                "src": "495:14:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2416,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "495:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2419,
                "name": "createdAt",
                "nodeType": "VariableDeclaration",
                "scope": 2420,
                "src": "519:14:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2418,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "519:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "PaymentCheck",
            "nodeType": "StructDefinition",
            "scope": 3166,
            "src": "425:115:13",
            "visibility": "public"
          },
          {
            "canonicalName": "Payment.Reference",
            "id": 2430,
            "members": [
              {
                "constant": false,
                "id": 2422,
                "name": "id",
                "nodeType": "VariableDeclaration",
                "scope": 2430,
                "src": "573:9:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2421,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "573:6:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2424,
                "name": "value",
                "nodeType": "VariableDeclaration",
                "scope": 2430,
                "src": "592:12:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2423,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "592:6:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2426,
                "name": "price",
                "nodeType": "VariableDeclaration",
                "scope": 2430,
                "src": "614:10:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2425,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "614:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2429,
                "name": "checks",
                "nodeType": "VariableDeclaration",
                "scope": 2430,
                "src": "634:15:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                  "typeString": "string[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 2427,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "634:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "id": 2428,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "634:8:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                    "typeString": "string[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Reference",
            "nodeType": "StructDefinition",
            "scope": 3166,
            "src": "546:110:13",
            "visibility": "public"
          },
          {
            "canonicalName": "Payment.Receiver",
            "id": 2436,
            "members": [
              {
                "constant": false,
                "id": 2432,
                "name": "id",
                "nodeType": "VariableDeclaration",
                "scope": 2436,
                "src": "688:9:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2431,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "688:6:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2435,
                "name": "references",
                "nodeType": "VariableDeclaration",
                "scope": 2436,
                "src": "707:19:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                  "typeString": "string[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 2433,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "707:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "id": 2434,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "707:8:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                    "typeString": "string[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Receiver",
            "nodeType": "StructDefinition",
            "scope": 3166,
            "src": "662:71:13",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2438,
            "name": "signaturit",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "739:25:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2437,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "739:7:13",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2440,
            "name": "contractId",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "771:24:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 2439,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "771:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2442,
            "name": "signatureId",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "801:25:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 2441,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "801:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2444,
            "name": "documentId",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "832:24:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 2443,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "832:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2447,
            "name": "receiversArray",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "863:30:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
              "typeString": "string[]"
            },
            "typeName": {
              "baseType": {
                "id": 2445,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "863:6:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "id": 2446,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "863:8:13",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                "typeString": "string[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2449,
            "name": "startDate",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "900:21:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2448,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "900:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2451,
            "name": "endDate",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "927:19:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2450,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "927:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2453,
            "name": "period",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "952:18:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2452,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "952:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2457,
            "name": "receivers",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "977:45:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
              "typeString": "mapping(string => struct Payment.Receiver)"
            },
            "typeName": {
              "id": 2456,
              "keyType": {
                "id": 2454,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "985:6:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "977:27:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                "typeString": "mapping(string => struct Payment.Receiver)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2455,
                "name": "Receiver",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2436,
                "src": "995:8:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Receiver_$2436_storage_ptr",
                  "typeString": "struct Payment.Receiver"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2461,
            "name": "references",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "1028:47:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
              "typeString": "mapping(string => struct Payment.Reference)"
            },
            "typeName": {
              "id": 2460,
              "keyType": {
                "id": 2458,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1036:6:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "1028:28:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                "typeString": "mapping(string => struct Payment.Reference)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2459,
                "name": "Reference",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2430,
                "src": "1046:9:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                  "typeString": "struct Payment.Reference"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2465,
            "name": "paymentChecks",
            "nodeType": "VariableDeclaration",
            "scope": 3166,
            "src": "1081:53:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
              "typeString": "mapping(string => struct Payment.PaymentCheck)"
            },
            "typeName": {
              "id": 2464,
              "keyType": {
                "id": 2462,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1089:6:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "1081:31:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                "typeString": "mapping(string => struct Payment.PaymentCheck)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2463,
                "name": "PaymentCheck",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2420,
                "src": "1099:12:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage_ptr",
                  "typeString": "struct Payment.PaymentCheck"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2495,
              "nodeType": "Block",
              "src": "1283:208:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2474,
                      "name": "contractId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2440,
                      "src": "1293:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2475,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2471,
                      "src": "1306:2:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1293:15:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2477,
                  "nodeType": "ExpressionStatement",
                  "src": "1293:15:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2478,
                      "name": "signaturit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2438,
                      "src": "1318:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2479,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "1331:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1331:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1318:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2482,
                  "nodeType": "ExpressionStatement",
                  "src": "1318:23:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2483,
                      "name": "userContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1628,
                      "src": "1352:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2485,
                          "name": "userContractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2467,
                          "src": "1391:19:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2484,
                        "name": "SignaturitUserInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7251,
                        "src": "1367:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignaturitUserInterface_$7251_$",
                          "typeString": "type(contract SignaturitUserInterface)"
                        }
                      },
                      "id": 2486,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1367:44:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "src": "1352:59:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                      "typeString": "contract SignaturitUserInterface"
                    }
                  },
                  "id": 2488,
                  "nodeType": "ExpressionStatement",
                  "src": "1352:59:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2489,
                      "name": "signatureContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1630,
                      "src": "1421:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_NotifierInterface_$6927",
                        "typeString": "contract NotifierInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2491,
                          "name": "signatureContractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2469,
                          "src": "1459:24:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2490,
                        "name": "NotifierInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6927,
                        "src": "1441:17:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_NotifierInterface_$6927_$",
                          "typeString": "type(contract NotifierInterface)"
                        }
                      },
                      "id": 2492,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1441:43:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_NotifierInterface_$6927",
                        "typeString": "contract NotifierInterface"
                      }
                    },
                    "src": "1421:63:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NotifierInterface_$6927",
                      "typeString": "contract NotifierInterface"
                    }
                  },
                  "id": 2494,
                  "nodeType": "ExpressionStatement",
                  "src": "1421:63:13"
                }
              ]
            },
            "documentation": null,
            "id": 2496,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2472,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2467,
                  "name": "userContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "1162:27:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2466,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1162:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2469,
                  "name": "signatureContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "1199:32:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2468,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1199:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2471,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "1241:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2470,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1241:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1152:111:13"
            },
            "returnParameters": {
              "id": 2473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1283:0:13"
            },
            "scope": 3166,
            "src": "1141:350:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2507,
              "nodeType": "Block",
              "src": "1523:147:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2499,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7304,
                            "src": "1554:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1554:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2501,
                          "name": "signaturit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2438,
                          "src": "1568:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1554:24:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c79205369676e617475726974206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 2503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1592:49:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c4d39fb6c3ef76259aa8a9c7aa83179d818e17cba0db927afcdb36c571443b99",
                          "typeString": "literal_string \"Only Signaturit account can perform this action\""
                        },
                        "value": "Only Signaturit account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c4d39fb6c3ef76259aa8a9c7aa83179d818e17cba0db927afcdb36c571443b99",
                          "typeString": "literal_string \"Only Signaturit account can perform this action\""
                        }
                      ],
                      "id": 2498,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "1533:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1533:118:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2505,
                  "nodeType": "ExpressionStatement",
                  "src": "1533:118:13"
                },
                {
                  "id": 2506,
                  "nodeType": "PlaceholderStatement",
                  "src": "1662:1:13"
                }
              ]
            },
            "documentation": null,
            "id": 2508,
            "name": "signaturitOnly",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2497,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1520:2:13"
            },
            "src": "1497:173:13",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2547,
              "nodeType": "Block",
              "src": "1869:201:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2523,
                      "name": "endDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2451,
                      "src": "1879:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2524,
                      "name": "end",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2516,
                      "src": "1889:3:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1879:13:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2526,
                  "nodeType": "ExpressionStatement",
                  "src": "1879:13:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2527,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2449,
                      "src": "1902:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2528,
                      "name": "start",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2514,
                      "src": "1914:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1902:17:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2530,
                  "nodeType": "ExpressionStatement",
                  "src": "1902:17:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2533,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2531,
                      "name": "documentId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2444,
                      "src": "1929:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2532,
                      "name": "document",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2512,
                      "src": "1942:8:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1929:21:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2534,
                  "nodeType": "ExpressionStatement",
                  "src": "1929:21:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2535,
                      "name": "period",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2453,
                      "src": "1960:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2536,
                      "name": "paymentPeriod",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2518,
                      "src": "1969:13:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1960:22:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2538,
                  "nodeType": "ExpressionStatement",
                  "src": "1960:22:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2539,
                      "name": "signatureId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2442,
                      "src": "1992:11:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2540,
                      "name": "signature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2510,
                      "src": "2006:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1992:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2542,
                  "nodeType": "ExpressionStatement",
                  "src": "1992:23:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2544,
                        "name": "CREATION_EVENT_TYPE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2411,
                        "src": "2043:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2543,
                      "name": "_notifySignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1655,
                      "src": "2026:16:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 2545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2026:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2546,
                  "nodeType": "ExpressionStatement",
                  "src": "2026:37:13"
                }
              ]
            },
            "documentation": null,
            "id": 2548,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2521,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2520,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2508,
                  "src": "1850:14:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1850:14:13"
              }
            ],
            "name": "init",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2510,
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 2548,
                  "src": "1699:23:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2509,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1699:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2512,
                  "name": "document",
                  "nodeType": "VariableDeclaration",
                  "scope": 2548,
                  "src": "1732:22:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2511,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1732:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2514,
                  "name": "start",
                  "nodeType": "VariableDeclaration",
                  "scope": 2548,
                  "src": "1764:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2513,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1764:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2516,
                  "name": "end",
                  "nodeType": "VariableDeclaration",
                  "scope": 2548,
                  "src": "1784:8:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2515,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1784:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2518,
                  "name": "paymentPeriod",
                  "nodeType": "VariableDeclaration",
                  "scope": 2548,
                  "src": "1802:18:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2517,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1802:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1689:137:13"
            },
            "returnParameters": {
              "id": 2522,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1869:0:13"
            },
            "scope": 3166,
            "src": "1676:394:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2559,
              "nodeType": "Block",
              "src": "2171:33:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2556,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2550,
                        "src": "2194:2:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2555,
                      "name": "_getReceiver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3028,
                      "src": "2181:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_struct$_Receiver_$2436_storage_ptr_$",
                        "typeString": "function (string memory) returns (struct Payment.Receiver storage pointer)"
                      }
                    },
                    "id": 2557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2181:16:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receiver_$2436_storage_ptr",
                      "typeString": "struct Payment.Receiver storage pointer"
                    }
                  },
                  "id": 2558,
                  "nodeType": "ExpressionStatement",
                  "src": "2181:16:13"
                }
              ]
            },
            "documentation": null,
            "id": 2560,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2553,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2552,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2508,
                  "src": "2152:14:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2152:14:13"
              }
            ],
            "name": "setReceiver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2550,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2560,
                  "src": "2106:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2549,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2106:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2096:32:13"
            },
            "returnParameters": {
              "id": 2554,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2171:0:13"
            },
            "scope": 3166,
            "src": "2076:128:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2598,
              "nodeType": "Block",
              "src": "2416:252:13",
              "statements": [
                {
                  "assignments": [
                    2574
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2574,
                      "name": "newReference",
                      "nodeType": "VariableDeclaration",
                      "scope": 2598,
                      "src": "2426:30:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                        "typeString": "struct Payment.Reference"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2573,
                        "name": "Reference",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2430,
                        "src": "2426:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                          "typeString": "struct Payment.Reference"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2579,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2576,
                        "name": "receiverId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2562,
                        "src": "2486:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2577,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2564,
                        "src": "2510:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2575,
                      "name": "_getReference",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3081,
                      "src": "2459:13:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_struct$_Reference_$2430_storage_ptr_$",
                        "typeString": "function (string memory,string memory) returns (struct Payment.Reference storage pointer)"
                      }
                    },
                    "id": 2578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2459:72:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                      "typeString": "struct Payment.Reference storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2426:105:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2580,
                        "name": "newReference",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2574,
                        "src": "2542:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                          "typeString": "struct Payment.Reference storage pointer"
                        }
                      },
                      "id": 2582,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "id",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2422,
                      "src": "2542:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2583,
                      "name": "referenceId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2564,
                      "src": "2560:11:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2542:29:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2585,
                  "nodeType": "ExpressionStatement",
                  "src": "2542:29:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2586,
                        "name": "newReference",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2574,
                        "src": "2581:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                          "typeString": "struct Payment.Reference storage pointer"
                        }
                      },
                      "id": 2588,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2424,
                      "src": "2581:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2589,
                      "name": "referenceValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2566,
                      "src": "2602:14:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2581:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2591,
                  "nodeType": "ExpressionStatement",
                  "src": "2581:35:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2592,
                        "name": "newReference",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2574,
                        "src": "2626:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                          "typeString": "struct Payment.Reference storage pointer"
                        }
                      },
                      "id": 2594,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "price",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2426,
                      "src": "2626:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2595,
                      "name": "referencePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2568,
                      "src": "2647:14:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2626:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2597,
                  "nodeType": "ExpressionStatement",
                  "src": "2626:35:13"
                }
              ]
            },
            "documentation": null,
            "id": 2599,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2571,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2570,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2508,
                  "src": "2397:14:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2397:14:13"
              }
            ],
            "name": "setReference",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2562,
                  "name": "receiverId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2599,
                  "src": "2241:24:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2561,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2241:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2564,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2599,
                  "src": "2275:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2563,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2275:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2566,
                  "name": "referenceValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 2599,
                  "src": "2310:28:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2565,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2310:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2568,
                  "name": "referencePrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 2599,
                  "src": "2348:19:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2567,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2348:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2231:142:13"
            },
            "returnParameters": {
              "id": 2572,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2416:0:13"
            },
            "scope": 3166,
            "src": "2210:458:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2646,
              "nodeType": "Block",
              "src": "2923:369:13",
              "statements": [
                {
                  "assignments": [
                    2617
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2617,
                      "name": "newReference",
                      "nodeType": "VariableDeclaration",
                      "scope": 2646,
                      "src": "2933:30:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                        "typeString": "struct Payment.Reference"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2616,
                        "name": "Reference",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2430,
                        "src": "2933:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                          "typeString": "struct Payment.Reference"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2622,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2619,
                        "name": "receiverId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2601,
                        "src": "2993:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2620,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2603,
                        "src": "3017:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2618,
                      "name": "_getReference",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3081,
                      "src": "2966:13:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_struct$_Reference_$2430_storage_ptr_$",
                        "typeString": "function (string memory,string memory) returns (struct Payment.Reference storage pointer)"
                      }
                    },
                    "id": 2621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2966:72:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                      "typeString": "struct Payment.Reference storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2933:105:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2632,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2623,
                        "name": "paymentChecks",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2465,
                        "src": "3049:13:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                          "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                        }
                      },
                      "id": 2625,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2624,
                        "name": "paymentCheckId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2605,
                        "src": "3063:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3049:29:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                        "typeString": "struct Payment.PaymentCheck storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2627,
                          "name": "paymentCheckId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2605,
                          "src": "3107:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2628,
                          "name": "status",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2607,
                          "src": "3135:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2629,
                          "name": "checkedAt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2609,
                          "src": "3155:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2630,
                          "name": "createdAt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2611,
                          "src": "3178:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2626,
                        "name": "PaymentCheck",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2420,
                        "src": "3081:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_PaymentCheck_$2420_storage_ptr_$",
                          "typeString": "type(struct Payment.PaymentCheck storage pointer)"
                        }
                      },
                      "id": 2631,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3081:116:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PaymentCheck_$2420_memory",
                        "typeString": "struct Payment.PaymentCheck memory"
                      }
                    },
                    "src": "3049:148:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                      "typeString": "struct Payment.PaymentCheck storage ref"
                    }
                  },
                  "id": 2633,
                  "nodeType": "ExpressionStatement",
                  "src": "3049:148:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2639,
                        "name": "paymentCheckId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2605,
                        "src": "3233:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2634,
                          "name": "newReference",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2617,
                          "src": "3208:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                            "typeString": "struct Payment.Reference storage pointer"
                          }
                        },
                        "id": 2637,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "checks",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2429,
                        "src": "3208:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 2638,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3208:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                        "typeString": "function (string storage ref) returns (uint256)"
                      }
                    },
                    "id": 2640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3208:40:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2641,
                  "nodeType": "ExpressionStatement",
                  "src": "3208:40:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2643,
                        "name": "CLAUSE_EVENT_TYPE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2408,
                        "src": "3267:17:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2642,
                      "name": "_notify",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1706,
                      "src": "3259:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 2644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3259:26:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2645,
                  "nodeType": "ExpressionStatement",
                  "src": "3259:26:13"
                }
              ]
            },
            "documentation": null,
            "id": 2647,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2614,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2613,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2508,
                  "src": "2904:14:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2904:14:13"
              }
            ],
            "name": "addPaymentCheck",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2612,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2601,
                  "name": "receiverId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2708:24:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2600,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2708:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2603,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2742:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2602,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2742:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2605,
                  "name": "paymentCheckId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2777:28:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2604,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2777:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2607,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2815:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2606,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2815:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2609,
                  "name": "checkedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2836:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2608,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2836:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2611,
                  "name": "createdAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2647,
                  "src": "2860:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2610,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2860:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2698:182:13"
            },
            "returnParameters": {
              "id": 2615,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2923:0:13"
            },
            "scope": 3166,
            "src": "2674:618:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2655,
              "nodeType": "Block",
              "src": "3380:45:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2652,
                      "name": "receiversArray",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2447,
                      "src": "3397:14:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 2653,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3397:21:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2651,
                  "id": 2654,
                  "nodeType": "Return",
                  "src": "3390:28:13"
                }
              ]
            },
            "documentation": null,
            "id": 2656,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReceiversSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2648,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3323:2:13"
            },
            "returnParameters": {
              "id": 2651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2650,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2656,
                  "src": "3370:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2649,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3370:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3369:6:13"
            },
            "scope": 3166,
            "src": "3298:127:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2691,
              "nodeType": "Block",
              "src": "3716:290:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2670,
                        "name": "paymentCheckId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2658,
                        "src": "3754:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2669,
                      "name": "_checkPaymentCheckExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3165,
                      "src": "3726:27:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3726:43:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2672,
                  "nodeType": "ExpressionStatement",
                  "src": "3726:43:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2673,
                            "name": "paymentChecks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2465,
                            "src": "3801:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                              "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                            }
                          },
                          "id": 2675,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2674,
                            "name": "paymentCheckId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2658,
                            "src": "3815:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3801:29:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                            "typeString": "struct Payment.PaymentCheck storage ref"
                          }
                        },
                        "id": 2676,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2413,
                        "src": "3801:32:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2677,
                            "name": "paymentChecks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2465,
                            "src": "3847:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                              "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                            }
                          },
                          "id": 2679,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2678,
                            "name": "paymentCheckId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2658,
                            "src": "3861:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3847:29:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                            "typeString": "struct Payment.PaymentCheck storage ref"
                          }
                        },
                        "id": 2680,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "status",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2415,
                        "src": "3847:36:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2681,
                            "name": "paymentChecks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2465,
                            "src": "3897:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                              "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                            }
                          },
                          "id": 2683,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2682,
                            "name": "paymentCheckId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2658,
                            "src": "3911:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3897:29:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                            "typeString": "struct Payment.PaymentCheck storage ref"
                          }
                        },
                        "id": 2684,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "checkedAt",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2417,
                        "src": "3897:39:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2685,
                            "name": "paymentChecks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2465,
                            "src": "3950:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                              "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                            }
                          },
                          "id": 2687,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2686,
                            "name": "paymentCheckId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2658,
                            "src": "3964:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3950:29:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                            "typeString": "struct Payment.PaymentCheck storage ref"
                          }
                        },
                        "id": 2688,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createdAt",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2419,
                        "src": "3950:39:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2689,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3787:212:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_storage_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(string storage ref,uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 2668,
                  "id": 2690,
                  "nodeType": "Return",
                  "src": "3780:219:13"
                }
              ]
            },
            "documentation": null,
            "id": 2692,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPaymentCheckById",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2658,
                  "name": "paymentCheckId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2692,
                  "src": "3511:28:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2657,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3511:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3501:44:13"
            },
            "returnParameters": {
              "id": 2668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2661,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2692,
                  "src": "3604:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2660,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3604:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2663,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2692,
                  "src": "3634:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2662,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3634:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2665,
                  "name": "checkedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2692,
                  "src": "3659:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2664,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3659:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2667,
                  "name": "createdAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2692,
                  "src": "3687:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2666,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3687:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3590:121:13"
            },
            "scope": 3166,
            "src": "3473:533:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2734,
              "nodeType": "Block",
              "src": "4336:451:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2706,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2694,
                        "src": "4400:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2707,
                                "name": "references",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2461,
                                "src": "4425:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                  "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                }
                              },
                              "id": 2709,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2708,
                                "name": "referenceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2694,
                                "src": "4436:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4425:23:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                "typeString": "struct Payment.Reference storage ref"
                              }
                            },
                            "id": 2710,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "checks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2429,
                            "src": "4425:30:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 2711,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4425:37:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4465:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "4425:41:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2705,
                      "name": "_checkPaymentCheckFromReferenceExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3146,
                      "src": "4346:40:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,uint256) view"
                      }
                    },
                    "id": 2714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4346:130:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2715,
                  "nodeType": "ExpressionStatement",
                  "src": "4346:130:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2717,
                            "name": "paymentChecks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2465,
                            "src": "4527:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                              "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                            }
                          },
                          "id": 2730,
                          "indexExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2718,
                                  "name": "references",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2461,
                                  "src": "4558:10:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                    "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                  }
                                },
                                "id": 2720,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2719,
                                  "name": "referenceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2694,
                                  "src": "4590:11:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4558:61:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                  "typeString": "struct Payment.Reference storage ref"
                                }
                              },
                              "id": 2721,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "checks",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2429,
                              "src": "4558:68:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            "id": 2729,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2722,
                                      "name": "references",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2461,
                                      "src": "4648:10:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                        "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                      }
                                    },
                                    "id": 2724,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2723,
                                      "name": "referenceId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2694,
                                      "src": "4684:11:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4648:69:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                      "typeString": "struct Payment.Reference storage ref"
                                    }
                                  },
                                  "id": 2725,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "checks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2429,
                                  "src": "4648:76:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                    "typeString": "string storage ref[] storage ref"
                                  }
                                },
                                "id": 2726,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4648:83:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4734:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4648:87:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4558:195:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4527:240:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                            "typeString": "struct Payment.PaymentCheck storage ref"
                          }
                        },
                        "id": 2731,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2413,
                        "src": "4527:243:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      ],
                      "id": 2716,
                      "name": "getPaymentCheckById",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2692,
                      "src": "4494:19:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (string memory) view returns (string memory,uint256,uint256,uint256)"
                      }
                    },
                    "id": 2732,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4494:286:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(string memory,uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 2704,
                  "id": 2733,
                  "nodeType": "Return",
                  "src": "4487:293:13"
                }
              ]
            },
            "documentation": null,
            "id": 2735,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLastPaymentCheckFromReference",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2694,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "4134:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2693,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4134:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4124:41:13"
            },
            "returnParameters": {
              "id": 2704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2697,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "4224:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2696,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4224:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2699,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "4254:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2698,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4254:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2701,
                  "name": "checkedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "4279:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2700,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4279:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2703,
                  "name": "createdAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "4307:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2702,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4307:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4210:121:13"
            },
            "scope": 3166,
            "src": "4083:704:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2809,
              "nodeType": "Block",
              "src": "5186:749:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2753,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2737,
                        "src": "5221:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2752,
                      "name": "_checkReferenceExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3100,
                      "src": "5196:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5196:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2755,
                  "nodeType": "ExpressionStatement",
                  "src": "5196:37:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2763,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2757,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2739,
                          "src": "5265:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2758,
                                "name": "references",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2461,
                                "src": "5273:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                  "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                }
                              },
                              "id": 2760,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2759,
                                "name": "referenceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2737,
                                "src": "5284:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5273:23:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                "typeString": "struct Payment.Reference storage ref"
                              }
                            },
                            "id": 2761,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "checks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2429,
                            "src": "5273:30:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 2762,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5273:37:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5265:45:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f766572666c6f77656420696e646578",
                        "id": 2764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5324:18:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        },
                        "value": "Overflowed index"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        }
                      ],
                      "id": 2756,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "5244:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5244:108:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2766,
                  "nodeType": "ExpressionStatement",
                  "src": "5244:108:13"
                },
                {
                  "assignments": [
                    2768
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2768,
                      "name": "thereIsMore",
                      "nodeType": "VariableDeclaration",
                      "scope": 2809,
                      "src": "5363:16:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2767,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5363:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2770,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 2769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5382:5:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5363:24:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2771,
                            "name": "references",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2461,
                            "src": "5402:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                              "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                            }
                          },
                          "id": 2773,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2772,
                            "name": "referenceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2737,
                            "src": "5413:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5402:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage",
                            "typeString": "struct Payment.Reference storage ref"
                          }
                        },
                        "id": 2774,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "checks",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2429,
                        "src": "5402:30:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 2775,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5402:37:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2778,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2776,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2739,
                        "src": "5442:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5450:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5442:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5402:49:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2784,
                  "nodeType": "IfStatement",
                  "src": "5398:85:13",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2782,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2780,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2768,
                        "src": "5465:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5479:4:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "5465:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 2783,
                    "nodeType": "ExpressionStatement",
                    "src": "5465:18:13"
                  }
                },
                {
                  "assignments": [
                    2786,
                    2788,
                    2790,
                    2792
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2786,
                      "name": "paymentCheckId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2809,
                      "src": "5508:28:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2785,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "5508:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2788,
                      "name": "paymentCheckStatus",
                      "nodeType": "VariableDeclaration",
                      "scope": 2809,
                      "src": "5550:23:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2787,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5550:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2790,
                      "name": "paymentCheckCheckedAt",
                      "nodeType": "VariableDeclaration",
                      "scope": 2809,
                      "src": "5587:26:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2789,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5587:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2792,
                      "name": "paymentCheckCreatedAt",
                      "nodeType": "VariableDeclaration",
                      "scope": 2809,
                      "src": "5627:26:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2791,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5627:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2801,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2794,
                              "name": "references",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2461,
                              "src": "5699:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                              }
                            },
                            "id": 2796,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2795,
                              "name": "referenceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2737,
                              "src": "5710:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5699:23:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Reference_$2430_storage",
                              "typeString": "struct Payment.Reference storage ref"
                            }
                          },
                          "id": 2797,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "checks",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2429,
                          "src": "5699:30:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                            "typeString": "string storage ref[] storage ref"
                          }
                        },
                        "id": 2799,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2798,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2739,
                          "src": "5730:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5699:37:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      ],
                      "id": 2793,
                      "name": "getPaymentCheckById",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2692,
                      "src": "5666:19:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (string memory) view returns (string memory,uint256,uint256,uint256)"
                      }
                    },
                    "id": 2800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5666:80:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(string memory,uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5494:252:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2802,
                        "name": "paymentCheckId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2786,
                        "src": "5777:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2803,
                        "name": "paymentCheckStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2788,
                        "src": "5805:18:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2804,
                        "name": "paymentCheckCheckedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2790,
                        "src": "5837:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2805,
                        "name": "paymentCheckCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2792,
                        "src": "5872:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2806,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2768,
                        "src": "5907:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2807,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5763:165:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$",
                      "typeString": "tuple(string memory,uint256,uint256,uint256,bool)"
                    }
                  },
                  "functionReturnParameters": 2751,
                  "id": 2808,
                  "nodeType": "Return",
                  "src": "5757:171:13"
                }
              ]
            },
            "documentation": null,
            "id": 2810,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPaymentCheckFromReference",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2737,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "4941:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2736,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4941:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2739,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "4976:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2738,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4976:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4931:61:13"
            },
            "returnParameters": {
              "id": 2751,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2742,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "5051:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2741,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5051:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2744,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "5081:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2743,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5081:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2746,
                  "name": "checkedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "5106:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2745,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5106:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2748,
                  "name": "createdAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "5134:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2747,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5134:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2750,
                  "name": "more",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "5162:9:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2749,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5162:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5037:144:13"
            },
            "scope": 3166,
            "src": "4894:1041:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2827,
              "nodeType": "Block",
              "src": "6144:109:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2818,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2812,
                        "src": "6179:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2817,
                      "name": "_checkReferenceExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3100,
                      "src": "6154:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6154:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2820,
                  "nodeType": "ExpressionStatement",
                  "src": "6154:37:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2821,
                          "name": "references",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2461,
                          "src": "6209:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                            "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                          }
                        },
                        "id": 2823,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2822,
                          "name": "referenceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2812,
                          "src": "6220:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6209:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reference_$2430_storage",
                          "typeString": "struct Payment.Reference storage ref"
                        }
                      },
                      "id": 2824,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checks",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2429,
                      "src": "6209:30:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 2825,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "6209:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2816,
                  "id": 2826,
                  "nodeType": "Return",
                  "src": "6202:44:13"
                }
              ]
            },
            "documentation": null,
            "id": 2828,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPaymentCheckSizeFromReference",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2813,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2812,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2828,
                  "src": "6052:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2811,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6052:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6042:41:13"
            },
            "returnParameters": {
              "id": 2816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2815,
                  "name": "size",
                  "nodeType": "VariableDeclaration",
                  "scope": 2828,
                  "src": "6129:9:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2814,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6129:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6128:11:13"
            },
            "scope": 3166,
            "src": "6001:252:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2857,
              "nodeType": "Block",
              "src": "6511:207:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2840,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2830,
                        "src": "6546:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2839,
                      "name": "_checkReferenceExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3100,
                      "src": "6521:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6521:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2842,
                  "nodeType": "ExpressionStatement",
                  "src": "6521:37:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2843,
                            "name": "references",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2461,
                            "src": "6589:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                              "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                            }
                          },
                          "id": 2845,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2844,
                            "name": "referenceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2830,
                            "src": "6600:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6589:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage",
                            "typeString": "struct Payment.Reference storage ref"
                          }
                        },
                        "id": 2846,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2422,
                        "src": "6589:26:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2847,
                            "name": "references",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2461,
                            "src": "6629:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                              "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                            }
                          },
                          "id": 2849,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2848,
                            "name": "referenceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2830,
                            "src": "6640:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6629:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage",
                            "typeString": "struct Payment.Reference storage ref"
                          }
                        },
                        "id": 2850,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2424,
                        "src": "6629:29:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2851,
                            "name": "references",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2461,
                            "src": "6672:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                              "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                            }
                          },
                          "id": 2853,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2852,
                            "name": "referenceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2830,
                            "src": "6683:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6672:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage",
                            "typeString": "struct Payment.Reference storage ref"
                          }
                        },
                        "id": 2854,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "price",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2426,
                        "src": "6672:29:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2855,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6575:136:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_storage_$_t_string_storage_$_t_uint256_$",
                      "typeString": "tuple(string storage ref,string storage ref,uint256)"
                    }
                  },
                  "functionReturnParameters": 2838,
                  "id": 2856,
                  "nodeType": "Return",
                  "src": "6569:142:13"
                }
              ]
            },
            "documentation": null,
            "id": 2858,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReferenceById",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2830,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2858,
                  "src": "6333:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2829,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6333:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6323:41:13"
            },
            "returnParameters": {
              "id": 2838,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2833,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2858,
                  "src": "6423:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2832,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6423:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2835,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2858,
                  "src": "6453:19:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2834,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6453:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2837,
                  "name": "price",
                  "nodeType": "VariableDeclaration",
                  "scope": 2858,
                  "src": "6486:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2836,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6486:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6409:97:13"
            },
            "scope": 3166,
            "src": "6298:420:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2927,
              "nodeType": "Block",
              "src": "7081:656:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2874,
                        "name": "receiverId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2860,
                        "src": "7115:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2873,
                      "name": "_checkReceiverExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3119,
                      "src": "7091:23:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7091:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2876,
                  "nodeType": "ExpressionStatement",
                  "src": "7091:35:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2884,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2878,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2862,
                          "src": "7158:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2879,
                                "name": "receivers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2457,
                                "src": "7166:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                  "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                                }
                              },
                              "id": 2881,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2880,
                                "name": "receiverId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2860,
                                "src": "7176:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7166:21:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                                "typeString": "struct Payment.Receiver storage ref"
                              }
                            },
                            "id": 2882,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "references",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2435,
                            "src": "7166:32:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 2883,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7166:39:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7158:47:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f766572666c6f77656420696e646578",
                        "id": 2885,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7219:18:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        },
                        "value": "Overflowed index"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        }
                      ],
                      "id": 2877,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "7137:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7137:110:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2887,
                  "nodeType": "ExpressionStatement",
                  "src": "7137:110:13"
                },
                {
                  "assignments": [
                    2889
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2889,
                      "name": "thereIsMore",
                      "nodeType": "VariableDeclaration",
                      "scope": 2927,
                      "src": "7258:16:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2888,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "7258:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2891,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 2890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7277:5:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7258:24:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2892,
                            "name": "receivers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2457,
                            "src": "7297:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                              "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                            }
                          },
                          "id": 2894,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2893,
                            "name": "receiverId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2860,
                            "src": "7307:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7297:21:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                            "typeString": "struct Payment.Receiver storage ref"
                          }
                        },
                        "id": 2895,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "references",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2435,
                        "src": "7297:32:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 2896,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7297:39:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2899,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2897,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2862,
                        "src": "7339:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7347:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "7339:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7297:51:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2905,
                  "nodeType": "IfStatement",
                  "src": "7293:87:13",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2903,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2901,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2889,
                        "src": "7362:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7376:4:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "7362:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 2904,
                    "nodeType": "ExpressionStatement",
                    "src": "7362:18:13"
                  }
                },
                {
                  "assignments": [
                    2907,
                    2909,
                    2911
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2907,
                      "name": "referenceId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2927,
                      "src": "7405:25:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2906,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "7405:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2909,
                      "name": "referenceValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 2927,
                      "src": "7444:28:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2908,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "7444:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2911,
                      "name": "referencePrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 2927,
                      "src": "7486:19:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2910,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7486:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2920,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2913,
                              "name": "receivers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2457,
                              "src": "7548:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                              }
                            },
                            "id": 2915,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2914,
                              "name": "receiverId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2860,
                              "src": "7558:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7548:21:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                              "typeString": "struct Payment.Receiver storage ref"
                            }
                          },
                          "id": 2916,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "references",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2435,
                          "src": "7548:32:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                            "typeString": "string storage ref[] storage ref"
                          }
                        },
                        "id": 2918,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2917,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2862,
                          "src": "7581:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7548:39:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      ],
                      "id": 2912,
                      "name": "getReferenceById",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2858,
                      "src": "7518:16:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$",
                        "typeString": "function (string memory) view returns (string memory,string memory,uint256)"
                      }
                    },
                    "id": 2919,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7518:79:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$",
                      "typeString": "tuple(string memory,string memory,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7391:206:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2921,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2907,
                        "src": "7628:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2922,
                        "name": "referenceValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2909,
                        "src": "7653:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2923,
                        "name": "referencePrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2911,
                        "src": "7681:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2924,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2889,
                        "src": "7709:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2925,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7614:116:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$",
                      "typeString": "tuple(string memory,string memory,uint256,bool)"
                    }
                  },
                  "functionReturnParameters": 2872,
                  "id": 2926,
                  "nodeType": "Return",
                  "src": "7608:122:13"
                }
              ]
            },
            "documentation": null,
            "id": 2928,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReferenceFromReceiver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2860,
                  "name": "receiverId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "6861:24:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2859,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6861:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2862,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "6895:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2861,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6895:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6851:60:13"
            },
            "returnParameters": {
              "id": 2872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2865,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "6970:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2864,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6970:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2867,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "7000:19:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2866,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7000:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2869,
                  "name": "price",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "7033:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2868,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7033:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2871,
                  "name": "more",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "7057:9:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2870,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7057:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6956:120:13"
            },
            "scope": 3166,
            "src": "6818:919:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2945,
              "nodeType": "Block",
              "src": "7922:109:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2936,
                        "name": "receiverId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2930,
                        "src": "7956:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2935,
                      "name": "_checkReceiverExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3119,
                      "src": "7932:23:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 2937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7932:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2938,
                  "nodeType": "ExpressionStatement",
                  "src": "7932:35:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2939,
                          "name": "receivers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2457,
                          "src": "7985:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                            "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                          }
                        },
                        "id": 2941,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2940,
                          "name": "receiverId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2930,
                          "src": "7995:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7985:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                          "typeString": "struct Payment.Receiver storage ref"
                        }
                      },
                      "id": 2942,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "references",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2435,
                      "src": "7985:32:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 2943,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "7985:39:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2934,
                  "id": 2944,
                  "nodeType": "Return",
                  "src": "7978:46:13"
                }
              ]
            },
            "documentation": null,
            "id": 2946,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReferenceSizeFromReceiver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2930,
                  "name": "receiverId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2946,
                  "src": "7831:24:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2929,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7831:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7821:40:13"
            },
            "returnParameters": {
              "id": 2934,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2933,
                  "name": "size",
                  "nodeType": "VariableDeclaration",
                  "scope": 2946,
                  "src": "7907:9:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2932,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7907:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7906:11:13"
            },
            "scope": 3166,
            "src": "7784:247:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2984,
              "nodeType": "Block",
              "src": "8229:311:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2956,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2948,
                          "src": "8260:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2957,
                            "name": "receiversArray",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2447,
                            "src": "8268:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 2958,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8268:21:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8260:29:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f766572666c6f77656420696e646578",
                        "id": 2960,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8303:18:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        },
                        "value": "Overflowed index"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c00c2b662971f7b704c8a3d0a10e42427079630b4d353148427813bca87b895b",
                          "typeString": "literal_string \"Overflowed index\""
                        }
                      ],
                      "id": 2955,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "8239:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8239:92:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2962,
                  "nodeType": "ExpressionStatement",
                  "src": "8239:92:13"
                },
                {
                  "assignments": [
                    2964
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2964,
                      "name": "thereIsMore",
                      "nodeType": "VariableDeclaration",
                      "scope": 2984,
                      "src": "8342:16:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2963,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "8342:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2966,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 2965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8361:5:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8342:24:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2972,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2967,
                        "name": "receiversArray",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2447,
                        "src": "8381:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 2968,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8381:21:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2971,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2969,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2948,
                        "src": "8405:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8413:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "8405:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8381:33:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2977,
                  "nodeType": "IfStatement",
                  "src": "8377:69:13",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2975,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2973,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2964,
                        "src": "8428:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2974,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8442:4:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "8428:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 2976,
                    "nodeType": "ExpressionStatement",
                    "src": "8428:18:13"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2978,
                          "name": "receiversArray",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2447,
                          "src": "8477:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                            "typeString": "string storage ref[] storage ref"
                          }
                        },
                        "id": 2980,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2979,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2948,
                          "src": "8492:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8477:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2981,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2964,
                        "src": "8512:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2982,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "8463:70:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_storage_$_t_bool_$",
                      "typeString": "tuple(string storage ref,bool)"
                    }
                  },
                  "functionReturnParameters": 2954,
                  "id": 2983,
                  "nodeType": "Return",
                  "src": "8457:76:13"
                }
              ]
            },
            "documentation": null,
            "id": 2985,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReceiverId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2948,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 2985,
                  "src": "8100:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2947,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8100:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8090:26:13"
            },
            "returnParameters": {
              "id": 2954,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2951,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2985,
                  "src": "8175:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2950,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8175:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2953,
                  "name": "more",
                  "nodeType": "VariableDeclaration",
                  "scope": 2985,
                  "src": "8205:9:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2952,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8205:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8161:63:13"
            },
            "scope": 3166,
            "src": "8068:472:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3027,
              "nodeType": "Block",
              "src": "8655:231:13",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3000,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2993,
                                "name": "receivers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2457,
                                "src": "8675:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                  "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                                }
                              },
                              "id": 2995,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2994,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2987,
                                "src": "8685:2:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8675:13:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                                "typeString": "struct Payment.Receiver storage ref"
                              }
                            },
                            "id": 2996,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2432,
                            "src": "8675:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          ],
                          "id": 2992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8669:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 2997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8669:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes storage pointer"
                        }
                      },
                      "id": 2998,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8669:30:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2999,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8703:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8669:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3022,
                  "nodeType": "IfStatement",
                  "src": "8665:184:13",
                  "trueBody": {
                    "id": 3021,
                    "nodeType": "Block",
                    "src": "8706:143:13",
                    "statements": [
                      {
                        "assignments": [
                          3004
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3004,
                            "name": "tmpString",
                            "nodeType": "VariableDeclaration",
                            "scope": 3021,
                            "src": "8721:25:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                              "typeString": "string[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 3002,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "8721:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string"
                                }
                              },
                              "id": 3003,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "8721:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                "typeString": "string[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3005,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8721:25:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3006,
                              "name": "receivers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2457,
                              "src": "8761:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                              }
                            },
                            "id": 3008,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3007,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2987,
                              "src": "8771:2:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8761:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                              "typeString": "struct Payment.Receiver storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3010,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2987,
                                "src": "8786:2:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3011,
                                "name": "tmpString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3004,
                                "src": "8790:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                  "typeString": "string memory[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                  "typeString": "string memory[] memory"
                                }
                              ],
                              "id": 3009,
                              "name": "Receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2436,
                              "src": "8777:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Receiver_$2436_storage_ptr_$",
                                "typeString": "type(struct Payment.Receiver storage pointer)"
                              }
                            },
                            "id": 3012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8777:23:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receiver_$2436_memory",
                              "typeString": "struct Payment.Receiver memory"
                            }
                          },
                          "src": "8761:39:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                            "typeString": "struct Payment.Receiver storage ref"
                          }
                        },
                        "id": 3014,
                        "nodeType": "ExpressionStatement",
                        "src": "8761:39:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3018,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2987,
                              "src": "8835:2:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3015,
                              "name": "receiversArray",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2447,
                              "src": "8815:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            "id": 3017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8815:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                              "typeString": "function (string storage ref) returns (uint256)"
                            }
                          },
                          "id": 3019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8815:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3020,
                        "nodeType": "ExpressionStatement",
                        "src": "8815:23:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3023,
                      "name": "receivers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2457,
                      "src": "8866:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                        "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                      }
                    },
                    "id": 3025,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3024,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2987,
                      "src": "8876:2:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8866:13:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                      "typeString": "struct Payment.Receiver storage ref"
                    }
                  },
                  "functionReturnParameters": 2991,
                  "id": 3026,
                  "nodeType": "Return",
                  "src": "8859:20:13"
                }
              ]
            },
            "documentation": null,
            "id": 3028,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getReceiver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2988,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2987,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3028,
                  "src": "8577:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2986,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8577:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8567:32:13"
            },
            "returnParameters": {
              "id": 2991,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2990,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3028,
                  "src": "8633:16:13",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Receiver_$2436_storage_ptr",
                    "typeString": "struct Payment.Receiver"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2989,
                    "name": "Receiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2436,
                    "src": "8633:8:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receiver_$2436_storage_ptr",
                      "typeString": "struct Payment.Receiver"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8632:18:13"
            },
            "scope": 3166,
            "src": "8546:340:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3080,
              "nodeType": "Block",
              "src": "9046:432:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3038,
                        "name": "receiverId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3030,
                        "src": "9069:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3037,
                      "name": "_getReceiver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3028,
                      "src": "9056:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_struct$_Receiver_$2436_storage_ptr_$",
                        "typeString": "function (string memory) returns (struct Payment.Receiver storage pointer)"
                      }
                    },
                    "id": 3039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9056:24:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receiver_$2436_storage_ptr",
                      "typeString": "struct Payment.Receiver storage pointer"
                    }
                  },
                  "id": 3040,
                  "nodeType": "ExpressionStatement",
                  "src": "9056:24:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3042,
                                "name": "references",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2461,
                                "src": "9101:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                  "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                }
                              },
                              "id": 3044,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3043,
                                "name": "referenceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3032,
                                "src": "9112:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9101:23:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                "typeString": "struct Payment.Reference storage ref"
                              }
                            },
                            "id": 3045,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2422,
                            "src": "9101:26:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          ],
                          "id": 3041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9095:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 3046,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9095:33:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes storage pointer"
                        }
                      },
                      "id": 3047,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9095:40:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3048,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9139:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9095:45:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3075,
                  "nodeType": "IfStatement",
                  "src": "9091:340:13",
                  "trueBody": {
                    "id": 3074,
                    "nodeType": "Block",
                    "src": "9142:289:13",
                    "statements": [
                      {
                        "assignments": [
                          3053
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3053,
                            "name": "tmpPaymentChecks",
                            "nodeType": "VariableDeclaration",
                            "scope": 3074,
                            "src": "9157:32:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                              "typeString": "string[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 3051,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "9157:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string"
                                }
                              },
                              "id": 3052,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "9157:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                "typeString": "string[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3054,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9157:32:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3055,
                              "name": "references",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2461,
                              "src": "9204:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                              }
                            },
                            "id": 3057,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3056,
                              "name": "referenceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3032,
                              "src": "9215:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9204:23:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Reference_$2430_storage",
                              "typeString": "struct Payment.Reference storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3059,
                                "name": "referenceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3032,
                                "src": "9257:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 3060,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9286:2:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3061,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9306:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "id": 3062,
                                "name": "tmpPaymentChecks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3053,
                                "src": "9325:16:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                  "typeString": "string memory[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                  "typeString": "string memory[] memory"
                                }
                              ],
                              "id": 3058,
                              "name": "Reference",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2430,
                              "src": "9230:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Reference_$2430_storage_ptr_$",
                                "typeString": "type(struct Payment.Reference storage pointer)"
                              }
                            },
                            "id": 3063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9230:125:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Reference_$2430_memory",
                              "typeString": "struct Payment.Reference memory"
                            }
                          },
                          "src": "9204:151:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reference_$2430_storage",
                            "typeString": "struct Payment.Reference storage ref"
                          }
                        },
                        "id": 3065,
                        "nodeType": "ExpressionStatement",
                        "src": "9204:151:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3071,
                              "name": "referenceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3032,
                              "src": "9408:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3066,
                                  "name": "receivers",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2457,
                                  "src": "9370:9:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                    "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                                  }
                                },
                                "id": 3068,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3067,
                                  "name": "receiverId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3030,
                                  "src": "9380:10:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9370:21:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                                  "typeString": "struct Payment.Receiver storage ref"
                                }
                              },
                              "id": 3069,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "references",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2435,
                              "src": "9370:32:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            "id": 3070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9370:37:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                              "typeString": "function (string storage ref) returns (uint256)"
                            }
                          },
                          "id": 3072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9370:50:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3073,
                        "nodeType": "ExpressionStatement",
                        "src": "9370:50:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3076,
                      "name": "references",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2461,
                      "src": "9448:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                        "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                      }
                    },
                    "id": 3078,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3077,
                      "name": "referenceId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3032,
                      "src": "9459:11:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9448:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Reference_$2430_storage",
                      "typeString": "struct Payment.Reference storage ref"
                    }
                  },
                  "functionReturnParameters": 3036,
                  "id": 3079,
                  "nodeType": "Return",
                  "src": "9441:30:13"
                }
              ]
            },
            "documentation": null,
            "id": 3081,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getReference",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3033,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3030,
                  "name": "receiverId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3081,
                  "src": "8924:24:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3029,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8924:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3032,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3081,
                  "src": "8958:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3031,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8958:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8914:75:13"
            },
            "returnParameters": {
              "id": 3036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3035,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3081,
                  "src": "9023:17:13",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                    "typeString": "struct Payment.Reference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3034,
                    "name": "Reference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2430,
                    "src": "9023:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Reference_$2430_storage_ptr",
                      "typeString": "struct Payment.Reference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9022:19:13"
            },
            "scope": 3166,
            "src": "8892:586:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3099,
              "nodeType": "Block",
              "src": "9583:128:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3088,
                                    "name": "references",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2461,
                                    "src": "9620:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                      "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                    }
                                  },
                                  "id": 3090,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3089,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3083,
                                    "src": "9631:2:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9620:14:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                    "typeString": "struct Payment.Reference storage ref"
                                  }
                                },
                                "id": 3091,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2422,
                                "src": "9620:17:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              ],
                              "id": 3087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9614:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": "bytes"
                            },
                            "id": 3092,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9614:24:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes storage pointer"
                            }
                          },
                          "id": 3093,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9614:31:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9649:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "9614:36:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686973207265666572656e636520646f65736e2774206578697374",
                        "id": 3096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9664:30:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_01fab1e488e7961b149fc9104735c438e9d741703043a169416ba397efb06b5b",
                          "typeString": "literal_string \"This reference doesn't exist\""
                        },
                        "value": "This reference doesn't exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_01fab1e488e7961b149fc9104735c438e9d741703043a169416ba397efb06b5b",
                          "typeString": "literal_string \"This reference doesn't exist\""
                        }
                      ],
                      "id": 3086,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "9593:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9593:111:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3098,
                  "nodeType": "ExpressionStatement",
                  "src": "9593:111:13"
                }
              ]
            },
            "documentation": null,
            "id": 3100,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkReferenceExistence",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3084,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3083,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3100,
                  "src": "9527:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3082,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9527:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9517:32:13"
            },
            "returnParameters": {
              "id": 3085,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9583:0:13"
            },
            "scope": 3166,
            "src": "9484:227:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3118,
              "nodeType": "Block",
              "src": "9815:126:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3107,
                                    "name": "receivers",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2457,
                                    "src": "9852:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Receiver_$2436_storage_$",
                                      "typeString": "mapping(string memory => struct Payment.Receiver storage ref)"
                                    }
                                  },
                                  "id": 3109,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3108,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3102,
                                    "src": "9862:2:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9852:13:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Receiver_$2436_storage",
                                    "typeString": "struct Payment.Receiver storage ref"
                                  }
                                },
                                "id": 3110,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2432,
                                "src": "9852:16:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              ],
                              "id": 3106,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9846:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": "bytes"
                            },
                            "id": 3111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9846:23:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes storage pointer"
                            }
                          },
                          "id": 3112,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9846:30:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9880:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "9846:35:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5468697320726563656976657220646f65736e2774206578697374",
                        "id": 3115,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9895:29:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7687c227db7480629f4d099430f17757b5f11764d062bfb1ab86e828d7be9075",
                          "typeString": "literal_string \"This receiver doesn't exist\""
                        },
                        "value": "This receiver doesn't exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7687c227db7480629f4d099430f17757b5f11764d062bfb1ab86e828d7be9075",
                          "typeString": "literal_string \"This receiver doesn't exist\""
                        }
                      ],
                      "id": 3105,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "9825:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9825:109:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3117,
                  "nodeType": "ExpressionStatement",
                  "src": "9825:109:13"
                }
              ]
            },
            "documentation": null,
            "id": 3119,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkReceiverExistence",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3102,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3119,
                  "src": "9759:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3101,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9759:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9749:32:13"
            },
            "returnParameters": {
              "id": 3104,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9815:0:13"
            },
            "scope": 3166,
            "src": "9717:224:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3145,
              "nodeType": "Block",
              "src": "10091:200:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3127,
                        "name": "referenceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3121,
                        "src": "10126:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3126,
                      "name": "_checkReferenceExistence",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3100,
                      "src": "10101:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) view"
                      }
                    },
                    "id": 3128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10101:37:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3129,
                  "nodeType": "ExpressionStatement",
                  "src": "10101:37:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3132,
                                      "name": "references",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2461,
                                      "src": "10176:10:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Reference_$2430_storage_$",
                                        "typeString": "mapping(string memory => struct Payment.Reference storage ref)"
                                      }
                                    },
                                    "id": 3134,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3133,
                                      "name": "referenceId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3121,
                                      "src": "10187:11:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10176:23:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Reference_$2430_storage",
                                      "typeString": "struct Payment.Reference storage ref"
                                    }
                                  },
                                  "id": 3135,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "checks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2429,
                                  "src": "10176:30:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                    "typeString": "string storage ref[] storage ref"
                                  }
                                },
                                "id": 3137,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3136,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3123,
                                  "src": "10207:5:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10176:37:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              ],
                              "id": 3131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10170:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": "bytes"
                            },
                            "id": 3138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10170:44:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes storage pointer"
                            }
                          },
                          "id": 3139,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10170:51:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10225:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10170:56:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686973207061796d656e7420636865636b20646f65736e2774206578697374",
                        "id": 3142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10240:34:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_365b95f4857792489b9254d025f167dbd09b4e90fdf251c4697b22d474d041ae",
                          "typeString": "literal_string \"This payment check doesn't exist\""
                        },
                        "value": "This payment check doesn't exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_365b95f4857792489b9254d025f167dbd09b4e90fdf251c4697b22d474d041ae",
                          "typeString": "literal_string \"This payment check doesn't exist\""
                        }
                      ],
                      "id": 3130,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "10149:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10149:135:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3144,
                  "nodeType": "ExpressionStatement",
                  "src": "10149:135:13"
                }
              ]
            },
            "documentation": null,
            "id": 3146,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkPaymentCheckFromReferenceExistence",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3124,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3121,
                  "name": "referenceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3146,
                  "src": "10006:25:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3120,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10006:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3123,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 3146,
                  "src": "10041:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3122,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10041:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9996:61:13"
            },
            "returnParameters": {
              "id": 3125,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10091:0:13"
            },
            "scope": 3166,
            "src": "9947:344:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3164,
              "nodeType": "Block",
              "src": "10399:135:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3153,
                                    "name": "paymentChecks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2465,
                                    "src": "10436:13:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_PaymentCheck_$2420_storage_$",
                                      "typeString": "mapping(string memory => struct Payment.PaymentCheck storage ref)"
                                    }
                                  },
                                  "id": 3155,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3154,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3148,
                                    "src": "10450:2:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10436:17:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PaymentCheck_$2420_storage",
                                    "typeString": "struct Payment.PaymentCheck storage ref"
                                  }
                                },
                                "id": 3156,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2413,
                                "src": "10436:20:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              ],
                              "id": 3152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10430:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": "bytes"
                            },
                            "id": 3157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10430:27:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes storage pointer"
                            }
                          },
                          "id": 3158,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10430:34:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10468:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10430:39:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686973207061796d656e7420636865636b20646f65736e2774206578697374",
                        "id": 3161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10483:34:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_365b95f4857792489b9254d025f167dbd09b4e90fdf251c4697b22d474d041ae",
                          "typeString": "literal_string \"This payment check doesn't exist\""
                        },
                        "value": "This payment check doesn't exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_365b95f4857792489b9254d025f167dbd09b4e90fdf251c4697b22d474d041ae",
                          "typeString": "literal_string \"This payment check doesn't exist\""
                        }
                      ],
                      "id": 3151,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "10409:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10409:118:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3163,
                  "nodeType": "ExpressionStatement",
                  "src": "10409:118:13"
                }
              ]
            },
            "documentation": null,
            "id": 3165,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkPaymentCheckExistence",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3149,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3148,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3165,
                  "src": "10343:16:13",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3147,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10343:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10333:32:13"
            },
            "returnParameters": {
              "id": 3150,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10399:0:13"
            },
            "scope": 3166,
            "src": "10297:237:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 3167,
        "src": "212:10324:13"
      }
    ],
    "src": "0:10537:13"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.3",
  "updatedAt": "2020-01-15T10:55:50.268Z"
}