{
  "contractName": "PayrollKit",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "ens",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fac",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "latestVersionAppBase",
      "outputs": [
        {
          "name": "base",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "ens",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "dao",
          "type": "address"
        }
      ],
      "name": "DeployInstance",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "appProxy",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "InstalledApp",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "newInstance",
      "outputs": [
        {
          "name": "dao",
          "type": "address"
        },
        {
          "name": "payroll",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516020806200543b833981016040525160008054600160a060020a038316600160a060020a0319909116178155818160408051808201909152600881527f626172652d6b697400000000000000000000000000000000000000000000000060208201526200008b9064010000000062000197810204565b9050620000a1816401000000006200029d810204565b600160a060020a031663c3b314726040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620000f857600080fd5b505af11580156200010d573d6000803e3d6000fd5b505050506040513d60208110156200012457600080fd5b505160018054600160a060020a031916600160a060020a0390921691909117905550505062000152620004c7565b604051809103906000f0801580156200016f573d6000803e3d6000fd5b5060028054600160a060020a031916600160a060020a039290921691909117905550620004d8565b60007f9065c3e7f7b7ef1ef4e53d2d0b8e0cef02874ab020c1ece79d5f0d3d0111c0ba600102826040518082805190602001908083835b60208310620001ef5780518252601f199092019160209182019101620001ce565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208282019790975281840196909652825180820384018152606090910192839052805190959294508493509185019190508083835b602083106200026b5780518252601f1990920191602091820191016200024a565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b60008054604080517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810185905290518392600160a060020a031691630178b8bf91602480830192602092919082900301818787803b1580156200030457600080fd5b505af115801562000319573d6000803e3d6000fd5b505050506040513d60208110156200033057600080fd5b5051604080517f3b3b57de000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a0390921691633b3b57de916024808201926020929091908290030181600087803b1580156200039757600080fd5b505af1158015620003ac573d6000803e3d6000fd5b505050506040513d6020811015620003c357600080fd5b5051604080517fc36af4600000000000000000000000000000000000000000000000000000000081529051919250600160a060020a0383169163c36af4609160048082019260009290919082900301818387803b1580156200042457600080fd5b505af115801562000439573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260a08110156200046357600080fd5b606082015160808301805191928401918491906401000000008111156200048957600080fd5b820160208101848111156200049d57600080fd5b8151640100000000811182820187101715620004b857600080fd5b50949998505050505050505050565b60405161227380620031c883390190565b612ce080620004e86000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633f15457f81146100665780635219cfa5146100a4578063c3b31472146100ec578063c6d2c71714610101575b600080fd5b34801561007257600080fd5b5061007b610119565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100b057600080fd5b506100b9610135565b6040805173ffffffffffffffffffffffffffffffffffffffff938416815291909216602082015281519081900390910190f35b3480156100f857600080fd5b5061007b610919565b34801561010d57600080fd5b5061007b600435610935565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600154604080517f216874440000000000000000000000000000000000000000000000000000000081523060048201529051600092839233928492839283928392839283928392839273ffffffffffffffffffffffffffffffffffffffff9091169163216874449160248082019260209290919082900301818787803b1580156101be57600080fd5b505af11580156101d2573d6000803e3d6000fd5b505050506040513d60208110156101e857600080fd5b5051604080517fde2873590000000000000000000000000000000000000000000000000000000081529051919c5073ffffffffffffffffffffffffffffffffffffffff8d169163de287359916004808201926020929091908290030181600087803b15801561025657600080fd5b505af115801561026a573d6000803e3d6000fd5b505050506040513d602081101561028057600080fd5b5051975061028c612b66565b604051809103906000f0801580156102a8573d6000803e3d6000fd5b50965061031f6040805190810160405280600a81526020017f55534420446f6c6c6172000000000000000000000000000000000000000000008152506040805190810160405280600381526020017f5553440000000000000000000000000000000000000000000000000000000000815250610b98565b95508773ffffffffffffffffffffffffffffffffffffffff1663be038478308d8e73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b505050506040513d60208110156103cd57600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201523060648201529051608480830192600092919082900301818387803b15801561044e57600080fd5b505af1158015610462573d6000803e3d6000fd5b505050506104718b898b610d34565b90955093506104848b898b878a8c611256565b99506104fe8b898b876040805190810160405280600781526020017f546f6b656e2031000000000000000000000000000000000000000000000000008152506040805190810160405280600381526020017f544b31000000000000000000000000000000000000000000000000000000000081525061197e565b604080517f8aaa228400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152600160248301529151929550908c1691638aaa22849160448082019260009290919082900301818387803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b505050506106098b898b876040805190810160405280600781526020017f546f6b656e2032000000000000000000000000000000000000000000000000008152506040805190810160405280600381526020017f544b32000000000000000000000000000000000000000000000000000000000081525061197e565b604080517f8aaa228400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152600160248301529151929450908c1691638aaa22849160448082019260009290919082900301818387803b15801561068457600080fd5b505af1158015610698573d6000803e3d6000fd5b505050506107148b898b876040805190810160405280600781526020017f546f6b656e2033000000000000000000000000000000000000000000000000008152506040805190810160405280600381526020017f544b33000000000000000000000000000000000000000000000000000000000081525061197e565b604080517f8aaa228400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152600160248301529151929350908c1691638aaa22849160448082019260009290919082900301818387803b15801561078f57600080fd5b505af11580156107a3573d6000803e3d6000fd5b505050506107b38a8a8585611ff6565b6107be8b898b612747565b610859888a8c8d73ffffffffffffffffffffffffffffffffffffffff16631bb440b16040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561082857600080fd5b505af115801561083c573d6000803e3d6000fd5b505050506040513d602081101561085257600080fd5b5051612820565b6108c3888a8c8d73ffffffffffffffffffffffffffffffffffffffff1663bf510ff46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561082857600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8d16815290517f8f42a14c9fe9e09f4fe8eeee69ae878731c838b6497425d4c30e1d09336cf34b9181900360200190a15050505050505050509091565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60008054604080517f0178b8bf000000000000000000000000000000000000000000000000000000008152600481018590529051839273ffffffffffffffffffffffffffffffffffffffff1691630178b8bf91602480830192602092919082900301818787803b1580156109a857600080fd5b505af11580156109bc573d6000803e3d6000fd5b505050506040513d60208110156109d257600080fd5b5051604080517f3b3b57de00000000000000000000000000000000000000000000000000000000815260048101869052905173ffffffffffffffffffffffffffffffffffffffff90921691633b3b57de916024808201926020929091908290030181600087803b158015610a4557600080fd5b505af1158015610a59573d6000803e3d6000fd5b505050506040513d6020811015610a6f57600080fd5b5051604080517fc36af460000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff83169163c36af4609160048082019260009290919082900301818387803b158015610adc57600080fd5b505af1158015610af0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260a0811015610b3757600080fd5b60608201516080830180519192840191849190640100000000811115610b5c57600080fd5b82016020810184811115610b6f57600080fd5b8151640100000000811182820187101715610b8957600080fd5b50949998505050505050505050565b6002546040517f5b7b72c100000000000000000000000000000000000000000000000000000000815260006004820181815260248301829052601260648401819052600160a4850181905260c060448601908152885160c48701528851949673ffffffffffffffffffffffffffffffffffffffff1695635b7b72c195889586958c9590948c9491939091608481019160e49091019060208901908083838d5b83811015610c4f578181015183820152602001610c37565b50505050905090810190601f168015610c7c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610caf578181015183820152602001610c97565b50505050905090810190601f168015610cdc5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015610d0157600080fd5b505af1158015610d15573d6000803e3d6000fd5b505050506040513d6020811015610d2b57600080fd5b50519392505050565b600080600080600080610d7b6040805190810160405280600581526020017f7661756c740000000000000000000000000000000000000000000000000000008152506129ec565b9350610dbb6040805190810160405280600781526020017f66696e616e6365000000000000000000000000000000000000000000000000008152506129ec565b92508873ffffffffffffffffffffffffffffffffffffffff166380cd5ac385610de387610935565b604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600481019390935273ffffffffffffffffffffffffffffffffffffffff90911660248301525160448083019260209291908290030181600087803b158015610e5657600080fd5b505af1158015610e6a573d6000803e3d6000fd5b505050506040513d6020811015610e8057600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff831681526020810187905281519294507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e3929081900390910190a18873ffffffffffffffffffffffffffffffffffffffff166380cd5ac384610efc86610935565b604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600481019390935273ffffffffffffffffffffffffffffffffffffffff90911660248301525160448083019260209291908290030181600087803b158015610f6f57600080fd5b505af1158015610f83573d6000803e3d6000fd5b505050506040513d6020811015610f9957600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905281519293507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e3929081900390910190a18173ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561105357600080fd5b505af1158015611067573d6000803e3d6000fd5b5050604080517f1798de8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526301e187e0602483015291519185169350631798de81925060448082019260009290919082900301818387803b1580156110e657600080fd5b505af11580156110fa573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff1663be03847882848573ffffffffffffffffffffffffffffffffffffffff1663206b60f96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561118057600080fd5b505af1158015611194573d6000803e3d6000fd5b505050506040513d60208110156111aa57600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401526044830191909152918b1660648201529051608480830192600092919082900301818387803b15801561122f57600080fd5b505af1158015611243573d6000803e3d6000fd5b50939b929a509198505050505050505050565b60008060006112996040805190810160405280600781526020017f706179726f6c6c000000000000000000000000000000000000000000000000008152506129ec565b91508873ffffffffffffffffffffffffffffffffffffffff166380cd5ac3836112c185610935565b604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600481019390935273ffffffffffffffffffffffffffffffffffffffff90911660248301525160448083019260209291908290030181600087803b15801561133457600080fd5b505af1158015611348573d6000803e3d6000fd5b505050506040513d602081101561135e57600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905281519293507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e3929081900390910190a1604080517f3fe3f1cf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152878116602483015286811660448301526103e86064830152915191831691633fe3f1cf9160848082019260009290919082900301818387803b15801561143d57600080fd5b505af1158015611451573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff1663be03847882888973ffffffffffffffffffffffffffffffffffffffff16630842ace46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156114d757600080fd5b505af11580156114eb573d6000803e3d6000fd5b505050506040513d602081101561150157600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401526044830191909152918b1660648201529051608480830192600092919082900301818387803b15801561158657600080fd5b505af115801561159a573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff1663be03847888838473ffffffffffffffffffffffffffffffffffffffff16637100650e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561162057600080fd5b505af1158015611634573d6000803e3d6000fd5b505050506040513d602081101561164a57600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401526044830191909152918b1660648201529051608480830192600092919082900301818387803b1580156116cf57600080fd5b505af11580156116e3573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff1663be03847830838473ffffffffffffffffffffffffffffffffffffffff16631bb440b16040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561176957600080fd5b505af115801561177d573d6000803e3d6000fd5b505050506040513d602081101561179357600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201523060648201529051608480830192600092919082900301818387803b15801561181457600080fd5b505af1158015611828573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff1663be03847830838473ffffffffffffffffffffffffffffffffffffffff1663bf510ff46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156118ae57600080fd5b505af11580156118c2573d6000803e3d6000fd5b505050506040513d60208110156118d857600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201523060648201529051608480830192600092919082900301818387803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b50929b9a5050505050505050505050565b6000806000806119c26040805190810160405280600d81526020017f746f6b656e2d6d616e61676572000000000000000000000000000000000000008152506129ec565b92506119ce8686610b98565b91508973ffffffffffffffffffffffffffffffffffffffff166380cd5ac3846119f686610935565b604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600481019390935273ffffffffffffffffffffffffffffffffffffffff90911660248301525160448083019260209291908290030181600087803b158015611a6957600080fd5b505af1158015611a7d573d6000803e3d6000fd5b505050506040513d6020811015611a9357600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905281519293507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e3929081900390910190a18173ffffffffffffffffffffffffffffffffffffffff16633cebb823826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611b8457600080fd5b505af1158015611b98573d6000803e3d6000fd5b5050604080517fe37ff29f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600160248301526000604483018190529251908616945063e37ff29f93506064808301939282900301818387803b158015611c1857600080fd5b505af1158015611c2c573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff1663be03847830838473ffffffffffffffffffffffffffffffffffffffff1663e9a9c8506040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611cb257600080fd5b505af1158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201523060648201529051608480830192600092919082900301818387803b158015611d5d57600080fd5b505af1158015611d71573d6000803e3d6000fd5b5050604080517f40c10f1900000000000000000000000000000000000000000000000000000000815230600482015267ffffffffffffffff6024820152905173ffffffffffffffffffffffffffffffffffffffff851693506340c10f199250604480830192600092919082900301818387803b158015611df057600080fd5b505af1158015611e04573d6000803e3d6000fd5b5050604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116600483015267ffffffffffffffff60248301529151918616935063095ea7b392506044808201926020929091908290030181600087803b158015611e8857600080fd5b505af1158015611e9c573d6000803e3d6000fd5b505050506040513d6020811015611eb257600080fd5b5050604080517fbfe07da600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015267ffffffffffffffff602483015260606044830152600f60648301527f496e697469616c206465706f7369740000000000000000000000000000000000608483015291519189169163bfe07da69160a48082019260009290919082900301818387803b158015611f6757600080fd5b505af1158015611f7b573d6000803e3d6000fd5b50505050611fe98989838473ffffffffffffffffffffffffffffffffffffffff1663e9a9c8506040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561082857600080fd5b5098975050505050505050565b604080517fea199a830000000000000000000000000000000000000000000000000000000081523060048201526609019ca16bdc0c6024820181905267ffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeae80420116604483015260806064830152600360848301527f43454f000000000000000000000000000000000000000000000000000000000060a48301529151738401eb5ff34cc943f096a32ef3d5113febe8d4eb9273306469457266cbbe7c0505e8aad358622235e7689273d873f6dc68e3057e4b7da74c6b304d0ef0b484c792660a21d03599578d91660b4203c9c6d30f916607e1690d3e608a91606091829173ffffffffffffffffffffffffffffffffffffffff8f169163ea199a839160c48082019260009290919082900301818387803b15801561213b57600080fd5b505af115801561214f573d6000803e3d6000fd5b505060408051600280825260608201835290935091506020830190803883390190505091508a82600081518110151561218457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029091019091015281518a90839060019081106121b957fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302909101909101526040805160028082526060820190925290816020016020820280388339019050509050602d81600081518110151561221157fe5b6020908102909101015280516037908290600190811061222d57fe5b90602001906020020181815250508c73ffffffffffffffffffffffffffffffffffffffff1663fe2fdf0b83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156122c85781810151838201526020016122b0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156123075781810151838201526020016122ef565b50505050905001945050505050600060405180830381600087803b15801561232e57600080fd5b505af1158015612342573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff16631216906b8d6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156123e157600080fd5b505af11580156123f5573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff1663ea199a838a876201518042036040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018267ffffffffffffffff1667ffffffffffffffff168152602001806020018281038252600f8152602001807f50726f6a656374204d616e616765720000000000000000000000000000000000815250602001945050505050600060405180830381600087803b1580156124f657600080fd5b505af115801561250a573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff1663ea199a8389866202a30042036040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018267ffffffffffffffff1667ffffffffffffffff16815260200180602001828103825260098152602001807f446576656c6f7065720000000000000000000000000000000000000000000000815250602001945050505050600060405180830381600087803b15801561260b57600080fd5b505af115801561261f573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff1663ea199a8388856202a30042036040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018267ffffffffffffffff1667ffffffffffffffff16815260200180602001828103825260098152602001807f446576656c6f7065720000000000000000000000000000000000000000000000815250602001945050505050600060405180830381600087803b15801561272057600080fd5b505af1158015612734573d6000803e3d6000fd5b5050505050505050505050505050505050565b6127b18282858673ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561082857600080fd5b61281b8282848573ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561082857600080fd5b505050565b604080517f0a8ed3db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152848116602483015260448201849052915191861691630a8ed3db9160648082019260009290919082900301818387803b1580156128a057600080fd5b505af11580156128b4573d6000803e3d6000fd5b5050604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff86811660248301526044820186905291519188169350639d0effdb925060648082019260009290919082900301818387803b15801561293657600080fd5b505af115801561294a573d6000803e3d6000fd5b5050604080517fafd925df00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528681166024830152604482018690529151918816935063afd925df925060648082019260009290919082900301818387803b1580156129ce57600080fd5b505af11580156129e2573d6000803e3d6000fd5b5050505050505050565b60007f9065c3e7f7b7ef1ef4e53d2d0b8e0cef02874ab020c1ece79d5f0d3d0111c0ba600102826040518082805190602001908083835b60208310612a6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612a23565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199092169116179052604080519290940182900382208282019790975281840196909652825180820384018152606090910192839052805190959294508493509185019190508083835b60208310612b1657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612ad9565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169216919091179052604051920182900390912095945050505050565b60405161013e80612b77833901905600608060405234801561001057600080fd5b5061011e806100206000396000f30060806040526004361060485763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663d81e84238114604d578063f40a04481460b3575b600080fd5b348015605857600080fd5b50607e73ffffffffffffffffffffffffffffffffffffffff6004358116906024351660d7565b604080516fffffffffffffffffffffffffffffffff909316835267ffffffffffffffff90911660208301528051918290030190f35b34801560be57600080fd5b5060c560e6565b60408051918252519081900360200190f35b50661aa535d3d0c00091429150565b670de0b6b3a7640000905600a165627a7a7230582083b752132a2edd9448fab0bf4ded4b1f9461f74d50166b1be8d23e9bcde5fcb90029a165627a7a72305820b5ca83a9fed98fa4a51b5947860b281ce85d37a15394c4df28aa7a3ece440f300029608060405234801561001057600080fd5b50612253806100206000396000f3006080604052600436106100405763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416635b7b72c18114610045575b600080fd5b34801561005157600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261010694823573ffffffffffffffffffffffffffffffffffffffff1694602480359536959460649492019190819084018382808284375050604080516020601f818a01358b0180359182018390048302840183018552818452989b60ff8b35169b909a90999401975091955091820193509150819084018382808284375094975050505091351515925061012f915050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6000803088888888888861014161030b565b73ffffffffffffffffffffffffffffffffffffffff808916825287166020808301919091526040820187905260ff8516608083015282151560c083015260e0606083018181528751918401919091528651909160a084019161010085019189019080838360005b838110156101c05781810151838201526020016101a8565b50505050905090810190601f1680156101ed5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610220578181015183820152602001610208565b50505050905090810190601f16801561024d5780820380516001836020036101000a031916815260200191505b509950505050505050505050604051809103906000f080158015610275573d6000803e3d6000fd5b50604080517f3cebb823000000000000000000000000000000000000000000000000000000008152336004820152905191925073ffffffffffffffffffffffffffffffffffffffff831691633cebb8239160248082019260009290919082900301818387803b1580156102e757600080fd5b505af11580156102fb573d6000803e3d6000fd5b50929a9950505050505050505050565b604051611f0c8061031c83390190560060c0604052600760808190527f4d4d545f302e310000000000000000000000000000000000000000000000000060a090815262000040916004919062000147565b503480156200004e57600080fd5b5060405162001f0c38038062001f0c8339810160409081528151602080840151928401516060850151608086015160a087015160c088015160008054600160a060020a03191633179055600b8054600160a060020a0389166101000261010060a860020a031990911617905592880180519698949690959294919091019291620000de9160019187019062000147565b506002805460ff191660ff851617905581516200010390600390602085019062000147565b5060058054600160a060020a031916600160a060020a039790971696909617909555505050600655600b805460ff19169115159190911790555043600755620001ec565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200018a57805160ff1916838001178555620001ba565b82800160010185558215620001ba579182015b82811115620001ba5782518255916020019190600101906200019d565b50620001c8929150620001cc565b5090565b620001e991905b80821115620001c85760008155600101620001d3565b90565b611d1080620001fc6000396000f3006080604052600436106101485763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610225578063095ea7b3146102af57806317634514146102f457806318160ddd1461031b57806323b872dd14610330578063313ce567146103675780633cebb823146103925780634ee2cd7e146103c057806354fd4d50146103f15780636638c0871461040657806370a08231146104d657806380a5400114610504578063827f32c01461051957806395d89b411461054a578063981b24d01461055f578063a9059cbb14610577578063bef97c87146105a8578063c5bcc4f1146105bd578063cae9ca51146105d2578063d3ce77fe14610648578063dd62ed3e14610679578063df8de3e7146106ad578063e77772fe146106db578063f41e60c5146106f0578063f77c47911461070a575b60005461016a9073ffffffffffffffffffffffffffffffffffffffff1661071f565b151561017557600080fd5b600054604080517ff48c3054000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163f48c3054913491602480830192602092919082900301818588803b1580156101e857600080fd5b505af11580156101fc573d6000803e3d6000fd5b50505050506040513d602081101561021357600080fd5b5051151560011461022357600080fd5b005b34801561023157600080fd5b5061023a610759565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027457818101518382015260200161025c565b50505050905090810190601f1680156102a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bb57600080fd5b506102e073ffffffffffffffffffffffffffffffffffffffff600435166024356107e6565b604080519115158252519081900360200190f35b34801561030057600080fd5b5061030961099b565b60408051918252519081900360200190f35b34801561032757600080fd5b506103096109a1565b34801561033c57600080fd5b506102e073ffffffffffffffffffffffffffffffffffffffff600435811690602435166044356109b2565b34801561037357600080fd5b5061037c610a70565b6040805160ff9092168252519081900360200190f35b34801561039e57600080fd5b5061022373ffffffffffffffffffffffffffffffffffffffff60043516610a79565b3480156103cc57600080fd5b5061030973ffffffffffffffffffffffffffffffffffffffff60043516602435610ae4565b3480156103fd57600080fd5b5061023a610cae565b34801561041257600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526104ad94369492936024939284019190819084018382808284375050604080516020601f818a01358b0180359182018390048302840183018552818452989b60ff8b35169b909a909994019750919550918201935091508190840183828082843750949750508435955050505050602001351515610d09565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156104e257600080fd5b5061030973ffffffffffffffffffffffffffffffffffffffff60043516610f96565b34801561051057600080fd5b506104ad610faa565b34801561052557600080fd5b506102e073ffffffffffffffffffffffffffffffffffffffff60043516602435610fc6565b34801561055657600080fd5b5061023a6110b9565b34801561056b57600080fd5b50610309600435611114565b34801561058357600080fd5b506102e073ffffffffffffffffffffffffffffffffffffffff60043516602435611244565b3480156105b457600080fd5b506102e0611263565b3480156105c957600080fd5b5061030961126c565b3480156105de57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526102e094823573ffffffffffffffffffffffffffffffffffffffff169460248035953695946064949201919081908401838280828437509497506112729650505050505050565b34801561065457600080fd5b506102e073ffffffffffffffffffffffffffffffffffffffff6004351660243561139a565b34801561068557600080fd5b5061030973ffffffffffffffffffffffffffffffffffffffff60043581169060243516611489565b3480156106b957600080fd5b5061022373ffffffffffffffffffffffffffffffffffffffff600435166114c1565b3480156106e757600080fd5b506104ad6116f6565b3480156106fc57600080fd5b506102236004351515611717565b34801561071657600080fd5b506104ad61176c565b60008073ffffffffffffffffffffffffffffffffffffffff831615156107485760009150610753565b823b90506000811191505b50919050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107de5780601f106107b3576101008083540402835291602001916107de565b820191906000526020600020905b8154815290600101906020018083116107c157829003601f168201915b505050505081565b600b5460009060ff1615156107fa57600080fd5b811580610835575033600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902054155b151561084057600080fd5b6000546108629073ffffffffffffffffffffffffffffffffffffffff1661071f565b156109265760008054604080517fda682aeb00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152604482018790529151919092169263da682aeb92606480820193602093909283900390910190829087803b1580156108ec57600080fd5b505af1158015610900573d6000803e3d6000fd5b505050506040513d602081101561091657600080fd5b5051151560011461092657600080fd5b33600081815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60075481565b60006109ac43611114565b90505b90565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610a5b57600b5460ff1615156109e357600080fd5b73ffffffffffffffffffffffffffffffffffffffff84166000908152600960209081526040808320338452909152902054821115610a2357506000610a69565b73ffffffffffffffffffffffffffffffffffffffff841660009081526009602090815260408083203384529091529020805483900390555b610a66848484611788565b90505b9392505050565b60025460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a9d57600080fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600860205260408120541580610b63575073ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040812080548492908110610b4357fe5b6000918252602090912001546fffffffffffffffffffffffffffffffff16115b15610c785760055473ffffffffffffffffffffffffffffffffffffffff1615610c705760055460065473ffffffffffffffffffffffffffffffffffffffff90911690634ee2cd7e908590610bb89086906119e5565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c3d57600080fd5b505af1158015610c51573d6000803e3d6000fd5b505050506040513d6020811015610c6757600080fd5b50519050610995565b506000610995565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020610ca790836119fb565b9050610995565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107de5780601f106107b3576101008083540402835291602001916107de565b600080808415610d195784610d1e565b600143035b600b546040517f5b7b72c100000000000000000000000000000000000000000000000000000000815230600482018181526024830185905260ff8c16606484015288151560a484015260c0604484019081528d5160c48501528d5195975061010090940473ffffffffffffffffffffffffffffffffffffffff1694635b7b72c194929388938f938f938f938e9391608482019160e40190602089019080838360005b83811015610dd8578181015183820152602001610dc0565b50505050905090810190601f168015610e055780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610e38578181015183820152602001610e20565b50505050905090810190601f168015610e655780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b505050506040513d6020811015610eb457600080fd5b5051604080517f3cebb823000000000000000000000000000000000000000000000000000000008152336004820152905191925073ffffffffffffffffffffffffffffffffffffffff831691633cebb8239160248082019260009290919082900301818387803b158015610f2757600080fd5b505af1158015610f3b573d6000803e3d6000fd5b505060408051858152905173ffffffffffffffffffffffffffffffffffffffff851693507f086c875b377f900b07ce03575813022f05dd10ed7640b5282cf6d3c3fc352ade92509081900360200190a2979650505050505050565b6000610fa28243610ae4565b90505b919050565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b600080548190819073ffffffffffffffffffffffffffffffffffffffff163314610fef57600080fd5b610ff76109a1565b915083820182111561100857600080fd5b61101185610f96565b905083810181111561102257600080fd5b61102f600a858401611b87565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260086020526040902061106090828601611b87565b60408051858152905173ffffffffffffffffffffffffffffffffffffffff8716916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3506001949350505050565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107de5780601f106107b3576101008083540402835291602001916107de565b600a546000901580611152575081600a600081548110151561113257fe5b6000918252602090912001546fffffffffffffffffffffffffffffffff16115b156112325760055473ffffffffffffffffffffffffffffffffffffffff161561122a5760055460065473ffffffffffffffffffffffffffffffffffffffff9091169063981b24d0906111a59085906119e5565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156111f757600080fd5b505af115801561120b573d6000803e3d6000fd5b505050506040513d602081101561122157600080fd5b50519050610fa5565b506000610fa5565b61123d600a836119fb565b9050610fa5565b600b5460009060ff16151561125857600080fd5b610a69338484611788565b600b5460ff1681565b60065481565b600061127e84846107e6565b151561128957600080fd5b6040517f8f4ffcb1000000000000000000000000000000000000000000000000000000008152336004820181815260248301869052306044840181905260806064850190815286516084860152865173ffffffffffffffffffffffffffffffffffffffff8a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015611329578181015183820152602001611311565b50505050905090810190601f1680156113565780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561137857600080fd5b505af115801561138c573d6000803e3d6000fd5b506001979650505050505050565b600080548190819073ffffffffffffffffffffffffffffffffffffffff1633146113c357600080fd5b6113cb6109a1565b9150838210156113da57600080fd5b6113e385610f96565b9050838110156113f257600080fd5b6113ff600a858403611b87565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260086020526040902061143090858303611b87565b60408051858152905160009173ffffffffffffffffffffffffffffffffffffffff8816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260096020908152604080832093909416825291909152205490565b60008054819073ffffffffffffffffffffffffffffffffffffffff1633146114e857600080fd5b73ffffffffffffffffffffffffffffffffffffffff83161515611553576000805460405173ffffffffffffffffffffffffffffffffffffffff90911691303180156108fc02929091818181858888f1935050505015801561154d573d6000803e3d6000fd5b506116f1565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905184935073ffffffffffffffffffffffffffffffffffffffff8416916370a082319160248083019260209291908290030181600087803b1580156115c457600080fd5b505af11580156115d8573d6000803e3d6000fd5b505050506040513d60208110156115ee57600080fd5b505160008054604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b15801561167157600080fd5b505af1158015611685573d6000803e3d6000fd5b505050506040513d602081101561169b57600080fd5b505060005460408051838152905173ffffffffffffffffffffffffffffffffffffffff928316928616917ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c919081900360200190a35b505050565b600b54610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461173b57600080fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000808083151561179c57600192506119dc565b60065443116117aa57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8516158015906117e5575073ffffffffffffffffffffffffffffffffffffffff85163014155b15156117f057600080fd5b6117fa8643610ae4565b91508382101561180d57600092506119dc565b60005461182f9073ffffffffffffffffffffffffffffffffffffffff1661071f565b156118f55760008054604080517f4a39314900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015289811660248301526044820189905291519190921692634a39314992606480820193602093909283900390910190829087803b1580156118bb57600080fd5b505af11580156118cf573d6000803e3d6000fd5b505050506040513d60208110156118e557600080fd5b505115156001146118f557600080fd5b73ffffffffffffffffffffffffffffffffffffffff8616600090815260086020526040902061192690858403611b87565b6119308543610ae4565b905083810181111561194157600080fd5b73ffffffffffffffffffffffffffffffffffffffff8516600090815260086020526040902061197290828601611b87565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600192505b50509392505050565b60008183106119f45781610a69565b5090919050565b600080600080858054905060001415611a175760009350611b7e565b855486906000198101908110611a2957fe5b6000918252602090912001546fffffffffffffffffffffffffffffffff168510611a9857855486906000198101908110611a5f57fe5b60009182526020909120015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff169350611b7e565b856000815481101515611aa757fe5b6000918252602090912001546fffffffffffffffffffffffffffffffff16851015611ad55760009350611b7e565b8554600093506000190191505b82821115611b3b576002600183850101049050848682815481101515611b0457fe5b6000918252602090912001546fffffffffffffffffffffffffffffffff1611611b2f57809250611b36565b6001810391505b611ae2565b8583815481101515611b4957fe5b60009182526020909120015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1693505b50505092915050565b815460009081901580611bc957508354439085906000198101908110611ba957fe5b6000918252602090912001546fffffffffffffffffffffffffffffffff16105b15611c535783548490611bdf8260018301611ca7565b81548110611be957fe5b600091825260209091200180546fffffffffffffffffffffffffffffffff858116700100000000000000000000000000000000024382167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931692909217161781559150611ca1565b835484906000198101908110611c6557fe5b600091825260209091200180546fffffffffffffffffffffffffffffffff80861670010000000000000000000000000000000002911617815590505b50505050565b8154818355818111156116f1576000838152602090206116f19181019083016109af91905b80821115611ce05760008155600101611ccc565b50905600a165627a7a723058205a44c4b66ea238cd7a06e7714f5b8c9ceea8c41953f9c86ff6a9900ab440c1430029a165627a7a7230582096e657436ba90f82e4a7b45a6ddf64877dc29430ee03b5b6eaedc0e0d0cd8d880029",
  "deployedBytecode": "0x6080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633f15457f81146100665780635219cfa5146100a4578063c3b31472146100ec578063c6d2c71714610101575b600080fd5b34801561007257600080fd5b5061007b610119565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100b057600080fd5b506100b9610135565b6040805173ffffffffffffffffffffffffffffffffffffffff938416815291909216602082015281519081900390910190f35b3480156100f857600080fd5b5061007b610919565b34801561010d57600080fd5b5061007b600435610935565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600154604080517f216874440000000000000000000000000000000000000000000000000000000081523060048201529051600092839233928492839283928392839283928392839273ffffffffffffffffffffffffffffffffffffffff9091169163216874449160248082019260209290919082900301818787803b1580156101be57600080fd5b505af11580156101d2573d6000803e3d6000fd5b505050506040513d60208110156101e857600080fd5b5051604080517fde2873590000000000000000000000000000000000000000000000000000000081529051919c5073ffffffffffffffffffffffffffffffffffffffff8d169163de287359916004808201926020929091908290030181600087803b15801561025657600080fd5b505af115801561026a573d6000803e3d6000fd5b505050506040513d602081101561028057600080fd5b5051975061028c612b66565b604051809103906000f0801580156102a8573d6000803e3d6000fd5b50965061031f6040805190810160405280600a81526020017f55534420446f6c6c6172000000000000000000000000000000000000000000008152506040805190810160405280600381526020017f5553440000000000000000000000000000000000000000000000000000000000815250610b98565b95508773ffffffffffffffffffffffffffffffffffffffff1663be038478308d8e73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b505050506040513d60208110156103cd57600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201523060648201529051608480830192600092919082900301818387803b15801561044e57600080fd5b505af1158015610462573d6000803e3d6000fd5b505050506104718b898b610d34565b90955093506104848b898b878a8c611256565b99506104fe8b898b876040805190810160405280600781526020017f546f6b656e2031000000000000000000000000000000000000000000000000008152506040805190810160405280600381526020017f544b31000000000000000000000000000000000000000000000000000000000081525061197e565b604080517f8aaa228400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152600160248301529151929550908c1691638aaa22849160448082019260009290919082900301818387803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b505050506106098b898b876040805190810160405280600781526020017f546f6b656e2032000000000000000000000000000000000000000000000000008152506040805190810160405280600381526020017f544b32000000000000000000000000000000000000000000000000000000000081525061197e565b604080517f8aaa228400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152600160248301529151929450908c1691638aaa22849160448082019260009290919082900301818387803b15801561068457600080fd5b505af1158015610698573d6000803e3d6000fd5b505050506107148b898b876040805190810160405280600781526020017f546f6b656e2033000000000000000000000000000000000000000000000000008152506040805190810160405280600381526020017f544b33000000000000000000000000000000000000000000000000000000000081525061197e565b604080517f8aaa228400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152600160248301529151929350908c1691638aaa22849160448082019260009290919082900301818387803b15801561078f57600080fd5b505af11580156107a3573d6000803e3d6000fd5b505050506107b38a8a8585611ff6565b6107be8b898b612747565b610859888a8c8d73ffffffffffffffffffffffffffffffffffffffff16631bb440b16040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561082857600080fd5b505af115801561083c573d6000803e3d6000fd5b505050506040513d602081101561085257600080fd5b5051612820565b6108c3888a8c8d73ffffffffffffffffffffffffffffffffffffffff1663bf510ff46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561082857600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8d16815290517f8f42a14c9fe9e09f4fe8eeee69ae878731c838b6497425d4c30e1d09336cf34b9181900360200190a15050505050505050509091565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60008054604080517f0178b8bf000000000000000000000000000000000000000000000000000000008152600481018590529051839273ffffffffffffffffffffffffffffffffffffffff1691630178b8bf91602480830192602092919082900301818787803b1580156109a857600080fd5b505af11580156109bc573d6000803e3d6000fd5b505050506040513d60208110156109d257600080fd5b5051604080517f3b3b57de00000000000000000000000000000000000000000000000000000000815260048101869052905173ffffffffffffffffffffffffffffffffffffffff90921691633b3b57de916024808201926020929091908290030181600087803b158015610a4557600080fd5b505af1158015610a59573d6000803e3d6000fd5b505050506040513d6020811015610a6f57600080fd5b5051604080517fc36af460000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff83169163c36af4609160048082019260009290919082900301818387803b158015610adc57600080fd5b505af1158015610af0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260a0811015610b3757600080fd5b60608201516080830180519192840191849190640100000000811115610b5c57600080fd5b82016020810184811115610b6f57600080fd5b8151640100000000811182820187101715610b8957600080fd5b50949998505050505050505050565b6002546040517f5b7b72c100000000000000000000000000000000000000000000000000000000815260006004820181815260248301829052601260648401819052600160a4850181905260c060448601908152885160c48701528851949673ffffffffffffffffffffffffffffffffffffffff1695635b7b72c195889586958c9590948c9491939091608481019160e49091019060208901908083838d5b83811015610c4f578181015183820152602001610c37565b50505050905090810190601f168015610c7c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610caf578181015183820152602001610c97565b50505050905090810190601f168015610cdc5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015610d0157600080fd5b505af1158015610d15573d6000803e3d6000fd5b505050506040513d6020811015610d2b57600080fd5b50519392505050565b600080600080600080610d7b6040805190810160405280600581526020017f7661756c740000000000000000000000000000000000000000000000000000008152506129ec565b9350610dbb6040805190810160405280600781526020017f66696e616e6365000000000000000000000000000000000000000000000000008152506129ec565b92508873ffffffffffffffffffffffffffffffffffffffff166380cd5ac385610de387610935565b604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600481019390935273ffffffffffffffffffffffffffffffffffffffff90911660248301525160448083019260209291908290030181600087803b158015610e5657600080fd5b505af1158015610e6a573d6000803e3d6000fd5b505050506040513d6020811015610e8057600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff831681526020810187905281519294507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e3929081900390910190a18873ffffffffffffffffffffffffffffffffffffffff166380cd5ac384610efc86610935565b604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600481019390935273ffffffffffffffffffffffffffffffffffffffff90911660248301525160448083019260209291908290030181600087803b158015610f6f57600080fd5b505af1158015610f83573d6000803e3d6000fd5b505050506040513d6020811015610f9957600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905281519293507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e3929081900390910190a18173ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561105357600080fd5b505af1158015611067573d6000803e3d6000fd5b5050604080517f1798de8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526301e187e0602483015291519185169350631798de81925060448082019260009290919082900301818387803b1580156110e657600080fd5b505af11580156110fa573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff1663be03847882848573ffffffffffffffffffffffffffffffffffffffff1663206b60f96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561118057600080fd5b505af1158015611194573d6000803e3d6000fd5b505050506040513d60208110156111aa57600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401526044830191909152918b1660648201529051608480830192600092919082900301818387803b15801561122f57600080fd5b505af1158015611243573d6000803e3d6000fd5b50939b929a509198505050505050505050565b60008060006112996040805190810160405280600781526020017f706179726f6c6c000000000000000000000000000000000000000000000000008152506129ec565b91508873ffffffffffffffffffffffffffffffffffffffff166380cd5ac3836112c185610935565b604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600481019390935273ffffffffffffffffffffffffffffffffffffffff90911660248301525160448083019260209291908290030181600087803b15801561133457600080fd5b505af1158015611348573d6000803e3d6000fd5b505050506040513d602081101561135e57600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905281519293507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e3929081900390910190a1604080517f3fe3f1cf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152878116602483015286811660448301526103e86064830152915191831691633fe3f1cf9160848082019260009290919082900301818387803b15801561143d57600080fd5b505af1158015611451573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff1663be03847882888973ffffffffffffffffffffffffffffffffffffffff16630842ace46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156114d757600080fd5b505af11580156114eb573d6000803e3d6000fd5b505050506040513d602081101561150157600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401526044830191909152918b1660648201529051608480830192600092919082900301818387803b15801561158657600080fd5b505af115801561159a573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff1663be03847888838473ffffffffffffffffffffffffffffffffffffffff16637100650e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561162057600080fd5b505af1158015611634573d6000803e3d6000fd5b505050506040513d602081101561164a57600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401526044830191909152918b1660648201529051608480830192600092919082900301818387803b1580156116cf57600080fd5b505af11580156116e3573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff1663be03847830838473ffffffffffffffffffffffffffffffffffffffff16631bb440b16040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561176957600080fd5b505af115801561177d573d6000803e3d6000fd5b505050506040513d602081101561179357600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201523060648201529051608480830192600092919082900301818387803b15801561181457600080fd5b505af1158015611828573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff1663be03847830838473ffffffffffffffffffffffffffffffffffffffff1663bf510ff46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156118ae57600080fd5b505af11580156118c2573d6000803e3d6000fd5b505050506040513d60208110156118d857600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201523060648201529051608480830192600092919082900301818387803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b50929b9a5050505050505050505050565b6000806000806119c26040805190810160405280600d81526020017f746f6b656e2d6d616e61676572000000000000000000000000000000000000008152506129ec565b92506119ce8686610b98565b91508973ffffffffffffffffffffffffffffffffffffffff166380cd5ac3846119f686610935565b604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600481019390935273ffffffffffffffffffffffffffffffffffffffff90911660248301525160448083019260209291908290030181600087803b158015611a6957600080fd5b505af1158015611a7d573d6000803e3d6000fd5b505050506040513d6020811015611a9357600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905281519293507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e3929081900390910190a18173ffffffffffffffffffffffffffffffffffffffff16633cebb823826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611b8457600080fd5b505af1158015611b98573d6000803e3d6000fd5b5050604080517fe37ff29f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600160248301526000604483018190529251908616945063e37ff29f93506064808301939282900301818387803b158015611c1857600080fd5b505af1158015611c2c573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff1663be03847830838473ffffffffffffffffffffffffffffffffffffffff1663e9a9c8506040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611cb257600080fd5b505af1158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201523060648201529051608480830192600092919082900301818387803b158015611d5d57600080fd5b505af1158015611d71573d6000803e3d6000fd5b5050604080517f40c10f1900000000000000000000000000000000000000000000000000000000815230600482015267ffffffffffffffff6024820152905173ffffffffffffffffffffffffffffffffffffffff851693506340c10f199250604480830192600092919082900301818387803b158015611df057600080fd5b505af1158015611e04573d6000803e3d6000fd5b5050604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116600483015267ffffffffffffffff60248301529151918616935063095ea7b392506044808201926020929091908290030181600087803b158015611e8857600080fd5b505af1158015611e9c573d6000803e3d6000fd5b505050506040513d6020811015611eb257600080fd5b5050604080517fbfe07da600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015267ffffffffffffffff602483015260606044830152600f60648301527f496e697469616c206465706f7369740000000000000000000000000000000000608483015291519189169163bfe07da69160a48082019260009290919082900301818387803b158015611f6757600080fd5b505af1158015611f7b573d6000803e3d6000fd5b50505050611fe98989838473ffffffffffffffffffffffffffffffffffffffff1663e9a9c8506040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561082857600080fd5b5098975050505050505050565b604080517fea199a830000000000000000000000000000000000000000000000000000000081523060048201526609019ca16bdc0c6024820181905267ffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeae80420116604483015260806064830152600360848301527f43454f000000000000000000000000000000000000000000000000000000000060a48301529151738401eb5ff34cc943f096a32ef3d5113febe8d4eb9273306469457266cbbe7c0505e8aad358622235e7689273d873f6dc68e3057e4b7da74c6b304d0ef0b484c792660a21d03599578d91660b4203c9c6d30f916607e1690d3e608a91606091829173ffffffffffffffffffffffffffffffffffffffff8f169163ea199a839160c48082019260009290919082900301818387803b15801561213b57600080fd5b505af115801561214f573d6000803e3d6000fd5b505060408051600280825260608201835290935091506020830190803883390190505091508a82600081518110151561218457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029091019091015281518a90839060019081106121b957fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302909101909101526040805160028082526060820190925290816020016020820280388339019050509050602d81600081518110151561221157fe5b6020908102909101015280516037908290600190811061222d57fe5b90602001906020020181815250508c73ffffffffffffffffffffffffffffffffffffffff1663fe2fdf0b83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156122c85781810151838201526020016122b0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156123075781810151838201526020016122ef565b50505050905001945050505050600060405180830381600087803b15801561232e57600080fd5b505af1158015612342573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff16631216906b8d6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156123e157600080fd5b505af11580156123f5573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff1663ea199a838a876201518042036040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018267ffffffffffffffff1667ffffffffffffffff168152602001806020018281038252600f8152602001807f50726f6a656374204d616e616765720000000000000000000000000000000000815250602001945050505050600060405180830381600087803b1580156124f657600080fd5b505af115801561250a573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff1663ea199a8389866202a30042036040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018267ffffffffffffffff1667ffffffffffffffff16815260200180602001828103825260098152602001807f446576656c6f7065720000000000000000000000000000000000000000000000815250602001945050505050600060405180830381600087803b15801561260b57600080fd5b505af115801561261f573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff1663ea199a8388856202a30042036040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018267ffffffffffffffff1667ffffffffffffffff16815260200180602001828103825260098152602001807f446576656c6f7065720000000000000000000000000000000000000000000000815250602001945050505050600060405180830381600087803b15801561272057600080fd5b505af1158015612734573d6000803e3d6000fd5b5050505050505050505050505050505050565b6127b18282858673ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561082857600080fd5b61281b8282848573ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561082857600080fd5b505050565b604080517f0a8ed3db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152848116602483015260448201849052915191861691630a8ed3db9160648082019260009290919082900301818387803b1580156128a057600080fd5b505af11580156128b4573d6000803e3d6000fd5b5050604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff86811660248301526044820186905291519188169350639d0effdb925060648082019260009290919082900301818387803b15801561293657600080fd5b505af115801561294a573d6000803e3d6000fd5b5050604080517fafd925df00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528681166024830152604482018690529151918816935063afd925df925060648082019260009290919082900301818387803b1580156129ce57600080fd5b505af11580156129e2573d6000803e3d6000fd5b5050505050505050565b60007f9065c3e7f7b7ef1ef4e53d2d0b8e0cef02874ab020c1ece79d5f0d3d0111c0ba600102826040518082805190602001908083835b60208310612a6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612a23565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199092169116179052604080519290940182900382208282019790975281840196909652825180820384018152606090910192839052805190959294508493509185019190508083835b60208310612b1657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612ad9565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169216919091179052604051920182900390912095945050505050565b60405161013e80612b77833901905600608060405234801561001057600080fd5b5061011e806100206000396000f30060806040526004361060485763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663d81e84238114604d578063f40a04481460b3575b600080fd5b348015605857600080fd5b50607e73ffffffffffffffffffffffffffffffffffffffff6004358116906024351660d7565b604080516fffffffffffffffffffffffffffffffff909316835267ffffffffffffffff90911660208301528051918290030190f35b34801560be57600080fd5b5060c560e6565b60408051918252519081900360200190f35b50661aa535d3d0c00091429150565b670de0b6b3a7640000905600a165627a7a7230582083b752132a2edd9448fab0bf4ded4b1f9461f74d50166b1be8d23e9bcde5fcb90029a165627a7a72305820b5ca83a9fed98fa4a51b5947860b281ce85d37a15394c4df28aa7a3ece440f300029",
  "sourceMap": "2402:6297:1:-;;;2651:112;8:9:-1;5:2;;;30:1;27;20:12;5:2;2651:112:1;;;;;;;;;;;;;2691:1;1303:10;;-1:-1:-1;;;;;1303:10:1;;-1:-1:-1;;;;;;1303:10:1;;;;;;2651:112;2691:1;1455:23;;;;;;;;;;;;;;;;;;;:11;;;;:23;:::i;:::-;1437:41;-1:-1:-1;1506:29:1;1437:41;1506:20;;;;:29;:::i;:::-;-1:-1:-1;;;;;1498:42:1;;:44;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1498:44:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1498:44:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1498:44:1;1492:3;:50;;-1:-1:-1;;;;;;1492:50:1;-1:-1:-1;;;;;1492:50:1;;;;;;;;;1247:353;;;2732:24;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2717:12:1;:39;;-1:-1:-1;;;;;;2717:39:1;-1:-1:-1;;;;;2717:39:1;;;;;;;;;;-1:-1:-1;2402:6297:1;;379:151:17;436:7;306:66;489:8;;515:4;499:22;;;;;;;;;;;;;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;;499:22:17;;;;;;;;;;;;472:50;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;472:50:17;;;;;;;;462:61;;472:50;;;;-1:-1:-1;472:50:17;;-1:-1:-1;462:61:17;;;;;-1:-1:-1;462:61:17;472:50;462: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;;;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;;462:61:17;;;;;;;;;;;;-1:-1:-1;;;;;379:151:17:o;1606:221:1:-;1672:12;1728:3;;:19;;;;;;;;;;;;;;1672:12;;-1:-1:-1;;;;;1728:3:1;;:12;;:19;;;;;;;;;;;;;;1672:12;1728:3;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;1728:19:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1728:19:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1728:19:1;1713:47;;;;;;;;;;;;;;-1:-1:-1;;;;;1713:40:1;;;;;;:47;;;;;1728:19;;1713:47;;;;;;;;;:40;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;1713:47:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1713:47:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1713:47:1;1782:16;;;;;;;;1713:47;;-1:-1:-1;;;;;;1782:14:1;;;;;:16;;;;;;;;;;;;;;;;:14;:16;;;5:2:-1;;;;30:1;27;20:12;5:2;1782:16:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1782:16:1;;;;;;39::-1;36:1;17:17;2:54;101:4;1782:16:1;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;1782:16:1;;;;;;;;;;;;;;;;;20:11:-1;12:20;;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;218:10;;268:11;251:29;;293:43;;;290:58;-1:-1;239:118;236:2;;;370:1;367;360:12;236:2;-1:-1;1771:27:1;;1606:221;-1:-1:-1;;;;;;;;;1606:221:1:o;2402:6297::-;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "2402:6297:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1102:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1102:14:1;;;;;;;;;;;;;;;;;;;;;;;2769:1482;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2769:1482:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1122:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1122:21:1;;;;1606:221;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1606:221:1;;;;;1102:14;;;;;;:::o;2769:1482::-;2909:3;;:16;;;;;;2920:4;2909:16;;;;;;2824:10;;;;2882;;2824;;;;;;;;;;;;;;;;2909:3;;;;;:10;;:16;;;;;;;;;;;;;;;2824:10;2909:3;:16;;;5:2:-1;;;;30:1;27;20:12;5:2;2909:16:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2909:16:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2909:16:1;2949:9;;;;;;;;2909:16;;-1:-1:-1;2949:7:1;;;;;;:9;;;;;2909:16;;2949:9;;;;;;;;;:7;:9;;;5:2:-1;;;;30:1;27;20:12;5:2;2949:9:1;;;;8::-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2949:9:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2949:9:1;;-1:-1:-1;3023:13:1;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3023:13:1;3003:33;;3078:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8;:29::i;:::-;3046:61;;3177:3;:20;;;3198:4;3204:3;3209;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3209:22:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3209:22:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:22:1;3177:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:4;3177:61;;;;;;;;;;;-1:-1:-1;;3177:61:1;;;;;;;-1:-1:-1;3177:61:1;;;;5:2:-1;;;;30:1;27;20:12;5:2;3177:61:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3177:61:1;;;;3314:31;3330:3;3335;3340:4;3314:15;:31::i;:::-;3295:50;;-1:-1:-1;3295:50:1;-1:-1:-1;3365:69:1;3380:3;3385;3390:4;3295:50;3405:17;3424:9;3365:14;:69::i;:::-;3355:79;;3499:62;3519:3;3524;3529:4;3535:7;3499:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;:62::i;:::-;3571:37;;;;;;:23;:37;;;;;;;3603:4;3571:37;;;;;;3478:83;;-1:-1:-1;3571:23:1;;;;;;:37;;;;;-1:-1:-1;;3571:37:1;;;;;;;;-1:-1:-1;3571:23:1;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;3571:37:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3571:37:1;;;;3640:62;3660:3;3665;3670:4;3676:7;3640:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;:62::i;:::-;3712:37;;;;;;:23;:37;;;;;;;3744:4;3712:37;;;;;;3619:83;;-1:-1:-1;3712:23:1;;;;;;:37;;;;;-1:-1:-1;;3712:37:1;;;;;;;;-1:-1:-1;3712:23:1;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;3712:37:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3712:37:1;;;;3781:62;3801:3;3806;3811:4;3817:7;3781:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;:62::i;:::-;3853:37;;;;;;:23;:37;;;;;;;3885:4;3853:37;;;;;;3760:83;;-1:-1:-1;3853:23:1;;;;;;:37;;;;;-1:-1:-1;;3853:37:1;;;;;;;;-1:-1:-1;3853:23:1;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;3853:37:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3853:37:1;;;;3937:43;3950:7;3959:4;3965:6;3973;3937:12;:43::i;:::-;4011:37;4033:3;4038;4043:4;4011:21;:37::i;:::-;4058:75;4076:3;4081:4;4087:7;4096;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4096:36:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4096:36:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4096:36:1;4058:17;:75::i;:::-;4143:66;4161:3;4166:4;4172:7;4181;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;4143:66:1;4225:19;;;;;;;;;;;;;;;;;;;2769:1482;;;;;;;;;;;:::o;1122:21::-;;;;;;:::o;1606:221::-;1672:12;1728:3;;:19;;;;;;;;;;;;;;1672:12;;1728:3;;;:12;;:19;;;;;;;;;;;;;;1672:12;1728:3;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;1728:19:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1728:19:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1728:19:1;1713:47;;;;;;;;;;;;;;:40;;;;;;;:47;;;;;1728:19;;1713:47;;;;;;;;;:40;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;1713:47:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1713:47:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1713:47:1;1782:16;;;;;;;;1713:47;;-1:-1:-1;1782:14:1;;;;;;:16;;;;;;;;;;;;;;;;:14;:16;;;5:2:-1;;;;30:1;27;20:12;5:2;1782:16:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1782:16:1;;;;;;39::-1;36:1;17:17;2:54;101:4;1782:16:1;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;1782:16:1;;;;;;;;;;;;;;;;;20:11:-1;12:20;;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;218:10;;268:11;251:29;;293:43;;;290:58;-1:-1;239:118;236:2;;;370:1;367;360:12;236:2;-1:-1;1771:27:1;;1606:221;-1:-1:-1;;;;;;;;;1606:221:1:o;7109:180::-;7210:12;;:72;;;;;7173:17;7210:72;;;;;;;;;;;;7265:2;7210:72;;;;;;:12;:72;;;;;;;;;;;;;;;;;;;;;7173:17;;7210:12;;;:29;;7173:17;;;;7259:4;;7265:2;;7269:6;;7210:12;;:72;;;;;;;;;;;;;;;;;;7173: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;7210:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7210:72:1;;;;;;;;;;;;;;;;;;;;;;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;7210:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7210:72:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7210:72:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7210:72:1;;7109:180;-1:-1:-1;;;7109:180:1:o;4257:703::-;4335:5;4342:7;4361:18;4412:20;4468:11;4610:15;4382:20;;;;;;;;;;;;;;;;;;;:11;:20::i;:::-;4361:41;;4435:22;;;;;;;;;;;;;;;;;;;:11;:22::i;:::-;4412:45;;4488:3;:18;;;4507:10;4519:32;4540:10;4519:20;:32::i;:::-;4488:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;4488:64:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4488:64:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4488:64:1;4568:31;;;;;;;;4488:64;4568:31;;;;;;;4488:64;;-1:-1:-1;4568:31:1;;;;;;;;;;;4636:3;:18;;;4655:12;4669:34;4690:12;4669:20;:34::i;:::-;4636:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;4636:68:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4636:68:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4636:68:1;4720:35;;;;;;;;4636:68;4720:35;;;;;;;4636:68;;-1:-1:-1;4720:35:1;;;;;;;;;;;4766:5;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4766:18:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4794:50:1;;;;;;:18;:50;;;;;;;2528:8;4794:50;;;;;;:18;;;;-1:-1:-1;4794:18:1;;-1:-1:-1;4794:50:1;;;;;-1:-1:-1;;4794:50:1;;;;;;;;-1:-1:-1;4794:18:1;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;4794:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4794:50:1;;;;4854:3;:20;;;4875:7;4884:5;4891;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4891:21:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4891:21:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4891:21:1;4854:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4854:65:1;;;;;;;-1:-1:-1;4854:65:1;;;;5:2:-1;;;;30:1;27;20:12;5:2;4854:65:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;4938:5:1;;4945:7;;-1:-1:-1;4257:703:1;;-1:-1:-1;;;;;;;;;4257:703:1:o;4966:1028::-;5178:7;5201:20;5257:15;5224:22;;;;;;;;;;;;;;;;;;;:11;:22::i;:::-;5201:45;;5283:3;:18;;;5302:12;5316:34;5337:12;5316:20;:34::i;:::-;5283:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;5283:68:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5283:68:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5283:68:1;5367:35;;;;;;;;5283:68;5367:35;;;;;;;5283:68;;-1:-1:-1;5367:35:1;;;;;;;;;;;5413:75;;;;;;:18;:75;;;;;;;;;;;;;;;;;;;;;2586:4;5413:75;;;;;;:18;;;;;;:75;;;;;-1:-1:-1;;5413:75:1;;;;;;;;-1:-1:-1;5413:18:1;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;5413:75:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5413:75:1;;;;5498:3;:20;;;5519:7;5528;5537;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5537:30:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5537:30:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5537:30:1;5498:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5498:76:1;;;;;;;-1:-1:-1;5498:76:1;;;;5:2:-1;;;;30:1;27;20:12;5:2;5498:76:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5498:76:1;;;;5584:3;:20;;;5605:4;5611:7;5620;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5620:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5620:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5620:33:1;5584:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5584:76:1;;;;;;;-1:-1:-1;5584:76:1;;;;5:2:-1;;;;30:1;27;20:12;5:2;5584:76:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5584:76:1;;;;5735:3;:20;;;5756:4;5762:7;5771;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5771:36:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5771:36:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5771:36:1;5735:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5809:4;5735:79;;;;;;;;;;;-1:-1:-1;;5735:79:1;;;;;;;-1:-1:-1;5735:79:1;;;;5:2:-1;;;;30:1;27;20:12;5:2;5735:79:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5735:79:1;;;;5892:3;:20;;;5913:4;5919:7;5928;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5928:27:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5928:27:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5928:27:1;5892:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5957:4;5892:70;;;;;;;;;;;-1:-1:-1;;5892:70:1;;;;;;;-1:-1:-1;5892:70:1;;;;5:2:-1;;;;30:1;27;20:12;5:2;5892:70:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;5980:7:1;;4966:1028;-1:-1:-1;;;;;;;;;;;4966:1028:1:o;6000:1103::-;6197:11;6224:25;6291:17;6343:25;6252:28;;;;;;;;;;;;;;;;;;;:11;:28::i;:::-;6224:56;;6311:22;6320:4;6326:6;6311:8;:22::i;:::-;6291:42;;6384:3;:18;;;6403:17;6422:39;6443:17;6422:20;:39::i;:::-;6384:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;6384:78:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6384:78:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6384:78:1;6478:45;;;;;;;;6384:78;6478:45;;;;;;;6384:78;;-1:-1:-1;6478:45:1;;;;;;;;;;;6534:5;:22;;;6557:12;6534:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6534:36:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6580:39:1;;;;;;:23;:39;;;;;;;6611:4;6580:39;;;;6617:1;6580:39;;;;;;;;:23;;;;-1:-1:-1;6580:23:1;;-1:-1:-1;6580:39:1;;;;;6617:1;6580:39;;;;;6617:1;6580:23;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;6580:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6580:39:1;;;;6684:3;:20;;;6705:4;6711:12;6725;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6725:24:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6725:24:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6725:24:1;6684:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6751:4;6684:72;;;;;;;;;;;-1:-1:-1;;6684:72:1;;;;;;;-1:-1:-1;6684:72:1;;;;5:2:-1;;;;30:1;27;20:12;5:2;6684:72:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6820:35:1;;;;;;6838:4;6820:35;;;;;;;;;;;:17;;;;-1:-1:-1;6820:17:1;;-1:-1:-1;6820:35:1;;;;;-1:-1:-1;;6820:35:1;;;;;;;-1:-1:-1;6820:17:1;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;6820:35:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6865:34:1;;;;;;:13;:34;;;;;;;;;;;;;;:13;;;;-1:-1:-1;6865:13:1;;-1:-1:-1;6865:34:1;;;;;;;;;;;;;;;-1:-1:-1;6865:13:1;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;6865:34:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6865:34:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;6909:53:1;;;;;;:15;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;;;:53;;;;;-1:-1:-1;;6909:53:1;;;;;;;;-1:-1:-1;6909:15:1;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;6909:53:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6909:53:1;;;;7005:68;7023:3;7028:4;7034:12;7048;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;7005:68:1;-1:-1:-1;7091:5:1;6000:1103;-1:-1:-1;;;;;;;;6000:1103:1:o;7295:1402::-;7940:62;;;;;;7960:4;7940:62;;;;7639:16;7940:62;;;;;;;7982:11;:3;:11;7940:62;;;;;;;;;;;;;;;;;;;;;;7426:42;;7497;;7568;;7692:16;;7745;;7799;;8013:30;;;;7940:19;;;;;;:62;;;;;7407:16;;7940:62;;;;;;;;7407:16;7940:19;:62;;;5:2:-1;;;;30:1;27;20:12;5:2;7940:62:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8046:16:1;;;8060:1;8046:16;;;;;;;;;;-1:-1:-1;8060:1:1;-1:-1:-1;8046:16:1;;;;;105:10:-1;8046:16:1;88:34:-1;136:17;;-1:-1;8046:16:1;8013:49;;8099:6;8072:13;8086:1;8072:16;;;;;;;;;;:34;;;;:16;;;;;;;;;;:34;8116:16;;8143:6;;8116:13;;8130:1;;8116:16;;;;;;:34;;;;:16;;;;;;;;;;:34;8193:16;;;8207:1;8193:16;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;8193:16:1;8161:48;;8237:2;8219:12;8232:1;8219:15;;;;;;;;;;;;;;;;;;:20;8249:15;;8267:2;;8249:12;;8262:1;;8249:15;;;;;;;;;;;;;:20;;;;;8280:7;:27;;;8308:13;8323:12;8280:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;8280:56:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;8280:56:1;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8280:56:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8280:56:1;;;;8346:7;:31;;;8378:4;8346:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8346:37:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8346:37:1;;;;8446:7;:19;;;8466:8;8476:7;8498:5;8492:3;:11;8446:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8446:78:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8446:78:1;;;;8534:7;:19;;;8554:8;8564:7;8586:6;8580:3;:12;8534:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8534:73:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8534:73:1;;;;8617:7;:19;;;8637:8;8647:7;8669:6;8663:3;:12;8617:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8617:73:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8617:73:1;;;;7295:1402;;;;;;;;;;;;;:::o;1833:297::-;1956:57;1974:3;1979:4;1985:3;1990;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1956:57:1;2059:64;2077:3;2082:4;2088:3;2093;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;2059:64:1;1833:297;;;:::o;2136:261::-;2238:42;;;;;;:19;:42;;;;;;;;;;;;;;;;;;;;;;:19;;;;;;:42;;;;;-1:-1:-1;;2238:42:1;;;;;;;;-1:-1:-1;2238:19:1;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;2238:42:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2290:43:1;;;;;;2311:4;2290:43;;;;:20;:43;;;;;;;;;;;;;;;:20;;;;-1:-1:-1;2290:20:1;;-1:-1:-1;2290:43:1;;;;;-1:-1:-1;;2290:43:1;;;;;;;;-1:-1:-1;2290:20:1;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;2290:43:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2343:47:1;;;;;;:24;:47;;;;;;;;;;;;;;;;;;;;;;:24;;;;-1:-1:-1;2343:24:1;;-1:-1:-1;2343:47:1;;;;;-1:-1:-1;;2343:47:1;;;;;;;;-1:-1:-1;2343:24:1;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;2343:47:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2343:47:1;;;;2136:261;;;;:::o;379:151:17:-;436:7;306:66;489:8;;515:4;499:22;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;246:30;;311:9;;295:26;;;340:21;;377:20;365:33;;499:22:17;;;;;;;;;;;;472:50;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;472:50:17;;;;;;;;462:61;;472:50;;;;-1:-1:-1;472:50:17;;-1:-1:-1;462:61:17;;;;;-1:-1:-1;462:61:17;472:50;462:61;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;246:30;;311:9;;295:26;;;340:21;;377:20;;;;365:33;;462:61:17;;;;;;;;;;;;-1:-1:-1;;;;;379:151:17:o;2402:6297:1:-;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.24;\n\nimport \"@aragon/apps-finance/contracts/Finance.sol\";\nimport \"@aragon/apps-shared-minime/contracts/MiniMeToken.sol\";\nimport \"@aragon/apps-vault/contracts/Vault.sol\";\nimport \"@aragon/os/contracts/acl/ACL.sol\";\nimport \"@aragon/os/contracts/apm/APMNamehash.sol\";\nimport \"@aragon/os/contracts/apm/Repo.sol\";\nimport \"@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol\";\nimport \"@aragon/os/contracts/factory/DAOFactory.sol\";\nimport \"@aragon/os/contracts/kernel/Kernel.sol\";\nimport \"@aragon/os/contracts/lib/ens/ENS.sol\";\nimport \"@aragon/os/contracts/lib/ens/PublicResolver.sol\";\nimport \"@aragon/ppf-contracts/contracts/IFeed.sol\";\nimport \"@aragon/apps-token-manager/contracts/TokenManager.sol\";\n\nimport \"../Payroll.sol\";\n\n\ncontract PPFMock is IFeed {\n    function ratePrecision() external pure returns (uint256) {\n        return 10 ** 18;\n    }\n\n    function get(address, address) external view returns (uint128 xrt, uint64 when) {\n      xrt = 7500000000000000; // 1 ETH = ~133USD\n      when = uint64(now);\n  }\n}\n\n\ncontract KitBase is APMNamehash, EVMScriptRegistryConstants {\n    ENS public ens;\n    DAOFactory public fac;\n\n    event DeployInstance(address dao);\n    event InstalledApp(address appProxy, bytes32 appId);\n\n    constructor(DAOFactory _fac, ENS _ens) public {\n        ens = _ens;\n\n        // If no factory is passed, get it from on-chain bare-kit\n        if (address(_fac) == address(0)) {\n            bytes32 bareKit = apmNamehash(\"bare-kit\");\n            fac = KitBase(latestVersionAppBase(bareKit)).fac();\n        } else {\n            fac = _fac;\n        }\n    }\n\n    function latestVersionAppBase(bytes32 appId) public view returns (address base) {\n        Repo repo = Repo(PublicResolver(ens.resolver(appId)).addr(appId));\n        (,base,) = repo.getLatest();\n\n        return base;\n    }\n\n    function cleanupDAOPermissions(Kernel dao, ACL acl, address root) internal {\n        // Kernel permission clean up\n        cleanupPermission(acl, root, dao, dao.APP_MANAGER_ROLE());\n\n        // ACL permission clean up\n        cleanupPermission(acl, root, acl, acl.CREATE_PERMISSIONS_ROLE());\n    }\n\n    function cleanupPermission(ACL acl, address root, address app, bytes32 permission) internal {\n        acl.grantPermission(root, app, permission);\n        acl.revokePermission(this, app, permission);\n        acl.setPermissionManager(root, app, permission);\n    }\n}\n\n\ncontract PayrollKit is KitBase {\n    MiniMeTokenFactory tokenFactory;\n\n    uint64 internal constant FINANCE_PERIOD_DURATION = 31557600;\n    uint64 internal constant RATE_EXPIRY_TIME = 1000;\n    uint64 internal constant MAX_UINT64 = uint64(-1);\n\n    constructor(ENS ens) KitBase(DAOFactory(0), ens) public {\n        tokenFactory = new MiniMeTokenFactory();\n    }\n\n    function newInstance()\n        public\n        returns (Kernel dao, Payroll payroll)\n    {\n        address root = msg.sender;\n\n        dao = fac.newDAO(this);\n        ACL acl = ACL(dao.acl());\n\n        // Payroll prerequisites\n        PPFMock priceFeed = new PPFMock();\n        MiniMeToken denominationToken = newToken(\"USD Dollar\", \"USD\");\n\n        // Allow this contract to install new apps for now\n        acl.createPermission(this, dao, dao.APP_MANAGER_ROLE(), this);\n\n        Vault vault;\n        Finance finance;\n        (vault, finance) = installBaseApps(dao, acl, root);\n        payroll = installPayroll(dao, acl, root, finance, denominationToken, priceFeed);\n\n        // Deploy payroll tokens\n        MiniMeToken token1 = installManagedToken(dao, acl, root, finance, \"Token 1\", \"TK1\");\n        payroll.setAllowedToken(token1, true);\n\n        MiniMeToken token2 = installManagedToken(dao, acl, root, finance, \"Token 2\", \"TK2\");\n        payroll.setAllowedToken(token2, true);\n\n        MiniMeToken token3 = installManagedToken(dao, acl, root, finance, \"Token 3\", \"TK3\");\n        payroll.setAllowedToken(token3, true);\n\n        // Add employees to payroll\n        addEmployees(payroll, root, token1, token2);\n\n        // Clean up\n        cleanupDAOPermissions(dao, acl, root);\n        cleanupPermission(acl, root, payroll, payroll.MANAGE_ALLOWED_TOKENS_ROLE());\n        cleanupPermission(acl, root, payroll, payroll.ADD_EMPLOYEE_ROLE());\n\n        emit DeployInstance(dao);\n    }\n\n    function installBaseApps(Kernel dao, ACL acl, address root) internal returns (Vault, Finance) {\n        bytes32 vaultAppId = apmNamehash(\"vault\");\n        bytes32 financeAppId = apmNamehash(\"finance\");\n\n        Vault vault = Vault(dao.newAppInstance(vaultAppId, latestVersionAppBase(vaultAppId)));\n        emit InstalledApp(vault, vaultAppId);\n\n        Finance finance = Finance(dao.newAppInstance(financeAppId, latestVersionAppBase(financeAppId)));\n        emit InstalledApp(finance, financeAppId);\n\n        vault.initialize();\n        finance.initialize(vault, FINANCE_PERIOD_DURATION);\n        acl.createPermission(finance, vault, vault.TRANSFER_ROLE(), root);\n\n        return (vault, finance);\n    }\n\n    function installPayroll(\n        Kernel dao,\n        ACL acl,\n        address root,\n        Finance finance,\n        MiniMeToken denominationToken,\n        IFeed priceFeed\n    )\n        internal\n        returns (Payroll)\n    {\n        bytes32 payrollAppId = apmNamehash(\"payroll\");\n\n        Payroll payroll = Payroll(dao.newAppInstance(payrollAppId, latestVersionAppBase(payrollAppId)));\n        emit InstalledApp(payroll, payrollAppId);\n\n        payroll.initialize(finance, denominationToken, priceFeed, RATE_EXPIRY_TIME);\n        acl.createPermission(payroll, finance, finance.CREATE_PAYMENTS_ROLE(), root);\n        acl.createPermission(root, payroll, payroll.TERMINATE_EMPLOYEE_ROLE(), root);\n\n        // Allow this contract to add tokens to Payroll for now\n        acl.createPermission(this, payroll, payroll.MANAGE_ALLOWED_TOKENS_ROLE(), this);\n\n        // Allow this contract to add employees to Payroll for now\n        acl.createPermission(this, payroll, payroll.ADD_EMPLOYEE_ROLE(), this);\n\n        return payroll;\n    }\n\n    function installManagedToken(\n        Kernel dao,\n        ACL acl,\n        address root,\n        Finance finance,\n        string name,\n        string symbol\n    )\n        internal\n        returns (MiniMeToken)\n    {\n        bytes32 tokenManagerAppId = apmNamehash(\"token-manager\");\n\n        MiniMeToken token = newToken(name, symbol);\n        TokenManager tokenManager = TokenManager(dao.newAppInstance(tokenManagerAppId, latestVersionAppBase(tokenManagerAppId)));\n        emit InstalledApp(tokenManager, tokenManagerAppId);\n\n        token.changeController(tokenManager);\n        tokenManager.initialize(token, true, 0);\n\n        // Allow this contract to mint tokens for now\n        acl.createPermission(this, tokenManager, tokenManager.MINT_ROLE(), this);\n\n        // Add some of the tokens to the Finance app\n        tokenManager.mint(this, MAX_UINT64);\n        token.approve(finance, MAX_UINT64);\n        finance.deposit(token, MAX_UINT64, \"Initial deposit\");\n\n        // Clean up permissions\n        cleanupPermission(acl, root, tokenManager, tokenManager.MINT_ROLE());\n\n        return token;\n    }\n\n    function newToken(string name, string symbol) internal returns (MiniMeToken token) {\n        token = tokenFactory.createCloneToken(MiniMeToken(0), 0, name, 18, symbol, true);\n    }\n\n    function addEmployees(Payroll payroll, address root, MiniMeToken token1, MiniMeToken token2) internal {\n        address account2 = 0x8401Eb5ff34cc943f096A32EF3d5113FEbE8D4Eb;\n        address account3 = 0x306469457266CBBe7c0505e8Aad358622235e768;\n        address account4 = 0xd873F6DC68e3057e4B7da74c6b304d0eF0B484C7;\n\n        uint256 salary1 = 2535047025122316; // 80000\n        uint256 salary2 = 2851927903262605; // 90000\n        uint256 salary3 = 3168808781402895; // 100000\n        uint256 salary4 = 2218166146982026; // 70000\n\n        // Set up first user; use this contract as the account so we can set up the initial distribution\n        payroll.addEmployee(this, salary1, uint64(now - 86400), \"CEO\");\n\n        address[] memory allowedTokens = new address[](2);\n        allowedTokens[0] = address(token1);\n        allowedTokens[1] = address(token2);\n\n        uint256[] memory distribution = new uint256[](2);\n        distribution[0] = 45;\n        distribution[1] = 55;\n\n        payroll.determineAllocation(allowedTokens, distribution);\n        payroll.changeAddressByEmployee(root); // Set account to root\n\n        // Create more users\n        payroll.addEmployee(account2, salary2, uint64(now - 86400), \"Project Manager\");\n        payroll.addEmployee(account3, salary3, uint64(now - 172800), \"Developer\");\n        payroll.addEmployee(account4, salary4, uint64(now - 172800), \"Developer\");\n    }\n}\n",
  "sourcePath": "/Users/facu/Documents/work/aragon/dev/aragon-apps/future-apps/payroll/contracts/examples/PayrollKit.sol",
  "ast": {
    "absolutePath": "/Users/facu/Documents/work/aragon/dev/aragon-apps/future-apps/payroll/contracts/examples/PayrollKit.sol",
    "exportedSymbols": {
      "KitBase": [
        2191
      ],
      "PPFMock": [
        2035
      ],
      "PayrollKit": [
        2860
      ]
    },
    "id": 2861,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1986,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:1"
      },
      {
        "absolutePath": "@aragon/apps-finance/contracts/Finance.sol",
        "file": "@aragon/apps-finance/contracts/Finance.sol",
        "id": 1987,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 5529,
        "src": "25:52:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "file": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "id": 1988,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 6725,
        "src": "78:62:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-vault/contracts/Vault.sol",
        "file": "@aragon/apps-vault/contracts/Vault.sol",
        "id": 1989,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 7858,
        "src": "141:48:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
        "file": "@aragon/os/contracts/acl/ACL.sol",
        "id": 1990,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 9153,
        "src": "190:42:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/apm/APMNamehash.sol",
        "file": "@aragon/os/contracts/apm/APMNamehash.sol",
        "id": 1991,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 9717,
        "src": "233:50:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/apm/Repo.sol",
        "file": "@aragon/os/contracts/apm/Repo.sol",
        "id": 1992,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 10110,
        "src": "284:43:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "id": 1993,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 11871,
        "src": "328:63:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/DAOFactory.sol",
        "file": "@aragon/os/contracts/factory/DAOFactory.sol",
        "id": 1994,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 12440,
        "src": "392:53:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
        "file": "@aragon/os/contracts/kernel/Kernel.sol",
        "id": 1995,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 13093,
        "src": "446:48:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/ENS.sol",
        "file": "@aragon/os/contracts/lib/ens/ENS.sol",
        "id": 1996,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 13458,
        "src": "495:46:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/PublicResolver.sol",
        "file": "@aragon/os/contracts/lib/ens/PublicResolver.sol",
        "id": 1997,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 13920,
        "src": "542:57:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/ppf-contracts/contracts/IFeed.sol",
        "file": "@aragon/ppf-contracts/contracts/IFeed.sol",
        "id": 1998,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 14314,
        "src": "600:51:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-token-manager/contracts/TokenManager.sol",
        "file": "@aragon/apps-token-manager/contracts/TokenManager.sol",
        "id": 1999,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 7604,
        "src": "652:63:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/facu/Documents/work/aragon/dev/aragon-apps/future-apps/payroll/contracts/Payroll.sol",
        "file": "../Payroll.sol",
        "id": 2000,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 1985,
        "src": "717:24:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2001,
              "name": "IFeed",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14313,
              "src": "764:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IFeed_$14313",
                "typeString": "contract IFeed"
              }
            },
            "id": 2002,
            "nodeType": "InheritanceSpecifier",
            "src": "764:5:1"
          }
        ],
        "contractDependencies": [
          14313
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2035,
        "linearizedBaseContracts": [
          2035,
          14313
        ],
        "name": "PPFMock",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 2011,
              "nodeType": "Block",
              "src": "833:32:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "id": 2009,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 2007,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "850:2:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3138",
                      "id": 2008,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "856:2:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_18_by_1",
                        "typeString": "int_const 18"
                      },
                      "value": "18"
                    },
                    "src": "850:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  },
                  "functionReturnParameters": 2006,
                  "id": 2010,
                  "nodeType": "Return",
                  "src": "843:15:1"
                }
              ]
            },
            "documentation": null,
            "id": 2012,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ratePrecision",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2003,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "798:2:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2005,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2012,
                  "src": "824:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2004,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "824:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "823:9:1"
            },
            "scope": 2035,
            "src": "776:89:1",
            "stateMutability": "pure",
            "superFunction": 14301,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2033,
              "nodeType": "Block",
              "src": "951:80:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2023,
                      "name": "xrt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2019,
                      "src": "959:3:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "37353030303030303030303030303030",
                      "id": 2024,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "965:16:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_7500000000000000_by_1",
                        "typeString": "int_const 7500000000000000"
                      },
                      "value": "7500000000000000"
                    },
                    "src": "959:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2026,
                  "nodeType": "ExpressionStatement",
                  "src": "959:22:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2027,
                      "name": "when",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2021,
                      "src": "1008:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2029,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15155,
                          "src": "1022:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2028,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1015:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint64_$",
                          "typeString": "type(uint64)"
                        },
                        "typeName": "uint64"
                      },
                      "id": 2030,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1015:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "1008:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2032,
                  "nodeType": "ExpressionStatement",
                  "src": "1008:18:1"
                }
              ]
            },
            "documentation": null,
            "id": 2034,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2017,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2014,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "884:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2013,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "884:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2016,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "893:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2015,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "893:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "883:18:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2022,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2019,
                  "name": "xrt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "925:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2018,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "925:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2021,
                  "name": "when",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "938:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2020,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "938:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "924:26:1"
            },
            "scope": 2035,
            "src": "871:160:1",
            "stateMutability": "view",
            "superFunction": 14312,
            "visibility": "external"
          }
        ],
        "scope": 2861,
        "src": "744:289:1"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2036,
              "name": "APMNamehash",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9716,
              "src": "1056:11:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_APMNamehash_$9716",
                "typeString": "contract APMNamehash"
              }
            },
            "id": 2037,
            "nodeType": "InheritanceSpecifier",
            "src": "1056:11:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2038,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11850,
              "src": "1069:26:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$11850",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 2039,
            "nodeType": "InheritanceSpecifier",
            "src": "1069:26:1"
          }
        ],
        "contractDependencies": [
          9716,
          11850
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2191,
        "linearizedBaseContracts": [
          2191,
          11850,
          9716
        ],
        "name": "KitBase",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2041,
            "name": "ens",
            "nodeType": "VariableDeclaration",
            "scope": 2191,
            "src": "1102:14:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ENS_$13457",
              "typeString": "contract ENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 2040,
              "name": "ENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13457,
              "src": "1102:3:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENS_$13457",
                "typeString": "contract ENS"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2043,
            "name": "fac",
            "nodeType": "VariableDeclaration",
            "scope": 2191,
            "src": "1122:21:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_DAOFactory_$12439",
              "typeString": "contract DAOFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 2042,
              "name": "DAOFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12439,
              "src": "1122:10:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                "typeString": "contract DAOFactory"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2047,
            "name": "DeployInstance",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2045,
                  "indexed": false,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2047,
                  "src": "1171:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2044,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1171:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1170:13:1"
            },
            "src": "1150:34:1"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2053,
            "name": "InstalledApp",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2049,
                  "indexed": false,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 2053,
                  "src": "1208:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2048,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1208:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2051,
                  "indexed": false,
                  "name": "appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2053,
                  "src": "1226:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2050,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1226:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1207:33:1"
            },
            "src": "1189:52:1"
          },
          {
            "body": {
              "id": 2094,
              "nodeType": "Block",
              "src": "1293:307:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2060,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2041,
                      "src": "1303:3:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$13457",
                        "typeString": "contract ENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2061,
                      "name": "_ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2057,
                      "src": "1309:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$13457",
                        "typeString": "contract ENS"
                      }
                    },
                    "src": "1303:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$13457",
                      "typeString": "contract ENS"
                    }
                  },
                  "id": 2063,
                  "nodeType": "ExpressionStatement",
                  "src": "1303:10:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2065,
                          "name": "_fac",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2055,
                          "src": "1402:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DAOFactory_$12439",
                            "typeString": "contract DAOFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_DAOFactory_$12439",
                            "typeString": "contract DAOFactory"
                          }
                        ],
                        "id": 2064,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1394:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2066,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1394:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1419:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 2067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1411:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2069,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1411:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1394:27:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2092,
                    "nodeType": "Block",
                    "src": "1559:35:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2088,
                            "name": "fac",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2043,
                            "src": "1573:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOFactory_$12439",
                              "typeString": "contract DAOFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2089,
                            "name": "_fac",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2055,
                            "src": "1579:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOFactory_$12439",
                              "typeString": "contract DAOFactory"
                            }
                          },
                          "src": "1573:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DAOFactory_$12439",
                            "typeString": "contract DAOFactory"
                          }
                        },
                        "id": 2091,
                        "nodeType": "ExpressionStatement",
                        "src": "1573:10:1"
                      }
                    ]
                  },
                  "id": 2093,
                  "nodeType": "IfStatement",
                  "src": "1390:204:1",
                  "trueBody": {
                    "id": 2087,
                    "nodeType": "Block",
                    "src": "1423:130:1",
                    "statements": [
                      {
                        "assignments": [
                          2072
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2072,
                            "name": "bareKit",
                            "nodeType": "VariableDeclaration",
                            "scope": 2095,
                            "src": "1437:15:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2071,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1437:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2076,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "626172652d6b6974",
                              "id": 2074,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1467:10:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eae34e1d5adf3d84ddaf56c05425677b54d69a021ff0c01c8b5f2289b91a4e9f",
                                "typeString": "literal_string \"bare-kit\""
                              },
                              "value": "bare-kit"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_eae34e1d5adf3d84ddaf56c05425677b54d69a021ff0c01c8b5f2289b91a4e9f",
                                "typeString": "literal_string \"bare-kit\""
                              }
                            ],
                            "id": 2073,
                            "name": "apmNamehash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9715,
                            "src": "1455:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (string memory) pure returns (bytes32)"
                            }
                          },
                          "id": 2075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1455:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1437:41:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2077,
                            "name": "fac",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2043,
                            "src": "1492:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOFactory_$12439",
                              "typeString": "contract DAOFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2080,
                                        "name": "bareKit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2072,
                                        "src": "1527:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 2079,
                                      "name": "latestVersionAppBase",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2126,
                                      "src": "1506:20:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                        "typeString": "function (bytes32) view returns (address)"
                                      }
                                    },
                                    "id": 2081,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1506:29:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2078,
                                  "name": "KitBase",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2191,
                                  "src": "1498:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_KitBase_$2191_$",
                                    "typeString": "type(contract KitBase)"
                                  }
                                },
                                "id": 2082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1498:38:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_KitBase_$2191",
                                  "typeString": "contract KitBase"
                                }
                              },
                              "id": 2083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fac",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2043,
                              "src": "1498:42:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOFactory_$12439_$",
                                "typeString": "function () view external returns (contract DAOFactory)"
                              }
                            },
                            "id": 2084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1498:44:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOFactory_$12439",
                              "typeString": "contract DAOFactory"
                            }
                          },
                          "src": "1492:50:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DAOFactory_$12439",
                            "typeString": "contract DAOFactory"
                          }
                        },
                        "id": 2086,
                        "nodeType": "ExpressionStatement",
                        "src": "1492:50:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2095,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2058,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2055,
                  "name": "_fac",
                  "nodeType": "VariableDeclaration",
                  "scope": 2095,
                  "src": "1259:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DAOFactory_$12439",
                    "typeString": "contract DAOFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2054,
                    "name": "DAOFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12439,
                    "src": "1259:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DAOFactory_$12439",
                      "typeString": "contract DAOFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2057,
                  "name": "_ens",
                  "nodeType": "VariableDeclaration",
                  "scope": 2095,
                  "src": "1276:8:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$13457",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2056,
                    "name": "ENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13457,
                    "src": "1276:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$13457",
                      "typeString": "contract ENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1258:27:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2059,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1293:0:1"
            },
            "scope": 2191,
            "src": "1247:353:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2125,
              "nodeType": "Block",
              "src": "1686:141:1",
              "statements": [
                {
                  "assignments": [
                    2103
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2103,
                      "name": "repo",
                      "nodeType": "VariableDeclaration",
                      "scope": 2126,
                      "src": "1696:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Repo_$10109",
                        "typeString": "contract Repo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2102,
                        "name": "Repo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10109,
                        "src": "1696:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Repo_$10109",
                          "typeString": "contract Repo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2115,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2112,
                            "name": "appId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2097,
                            "src": "1754:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2108,
                                    "name": "appId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2097,
                                    "src": "1741:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2106,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2041,
                                    "src": "1728:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$13457",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 2107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "resolver",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13342,
                                  "src": "1728:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32) view external returns (address)"
                                  }
                                },
                                "id": 2109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1728:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2105,
                              "name": "PublicResolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13919,
                              "src": "1713:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PublicResolver_$13919_$",
                                "typeString": "type(contract PublicResolver)"
                              }
                            },
                            "id": 2110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1713:35:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PublicResolver_$13919",
                              "typeString": "contract PublicResolver"
                            }
                          },
                          "id": 2111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "addr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13625,
                          "src": "1713:40:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 2113,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1713:47:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2104,
                      "name": "Repo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10109,
                      "src": "1708:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Repo_$10109_$",
                        "typeString": "type(contract Repo)"
                      }
                    },
                    "id": 2114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1708:53:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Repo_$10109",
                      "typeString": "contract Repo"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1696:65:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        null,
                        {
                          "argumentTypes": null,
                          "id": 2116,
                          "name": "base",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2100,
                          "src": "1773:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        null
                      ],
                      "id": 2117,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "1771:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$_t_address_$__$",
                        "typeString": "tuple(,address,)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2118,
                          "name": "repo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2103,
                          "src": "1782:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Repo_$10109",
                            "typeString": "contract Repo"
                          }
                        },
                        "id": 2119,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getLatest",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9913,
                        "src": "1782:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                          "typeString": "function () view external returns (uint16[3] memory,address,bytes memory)"
                        }
                      },
                      "id": 2120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1782:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(uint16[3] memory,address,bytes memory)"
                      }
                    },
                    "src": "1771:27:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2122,
                  "nodeType": "ExpressionStatement",
                  "src": "1771:27:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2123,
                    "name": "base",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2100,
                    "src": "1816:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2101,
                  "id": 2124,
                  "nodeType": "Return",
                  "src": "1809:11:1"
                }
              ]
            },
            "documentation": null,
            "id": 2126,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "latestVersionAppBase",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2098,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2097,
                  "name": "appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2126,
                  "src": "1636:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2096,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1636:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1635:15:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2101,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2100,
                  "name": "base",
                  "nodeType": "VariableDeclaration",
                  "scope": 2126,
                  "src": "1672:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2099,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1672:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1671:14:1"
            },
            "scope": 2191,
            "src": "1606:221:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2153,
              "nodeType": "Block",
              "src": "1908:222:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2136,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2130,
                        "src": "1974:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2137,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2132,
                        "src": "1979:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2138,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2128,
                        "src": "1985:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2139,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2128,
                            "src": "1990:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "APP_MANAGER_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12634,
                          "src": "1990:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1990:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2135,
                      "name": "cleanupPermission",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2190,
                      "src": "1956:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ACL_$9152_$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract ACL,address,address,bytes32)"
                      }
                    },
                    "id": 2142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1956:57:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2143,
                  "nodeType": "ExpressionStatement",
                  "src": "1956:57:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2145,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2130,
                        "src": "2077:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2146,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2132,
                        "src": "2082:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2147,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2130,
                        "src": "2088:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2148,
                            "name": "acl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2130,
                            "src": "2093:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ACL_$9152",
                              "typeString": "contract ACL"
                            }
                          },
                          "id": 2149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "CREATE_PERMISSIONS_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7876,
                          "src": "2093:27:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2093:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2144,
                      "name": "cleanupPermission",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2190,
                      "src": "2059:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ACL_$9152_$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract ACL,address,address,bytes32)"
                      }
                    },
                    "id": 2151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2059:64:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2152,
                  "nodeType": "ExpressionStatement",
                  "src": "2059:64:1"
                }
              ]
            },
            "documentation": null,
            "id": 2154,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "cleanupDAOPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2128,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2154,
                  "src": "1864:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2127,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "1864:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2130,
                  "name": "acl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2154,
                  "src": "1876:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ACL_$9152",
                    "typeString": "contract ACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2129,
                    "name": "ACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9152,
                    "src": "1876:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2132,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2154,
                  "src": "1885:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2131,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1885:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1863:35:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2134,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1908:0:1"
            },
            "scope": 2191,
            "src": "1833:297:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2189,
              "nodeType": "Block",
              "src": "2228:169:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2168,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2158,
                        "src": "2258:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2169,
                        "name": "app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2160,
                        "src": "2264:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2170,
                        "name": "permission",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2162,
                        "src": "2269:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2165,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2156,
                        "src": "2238:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "grantPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8099,
                      "src": "2238:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,bytes32) external"
                      }
                    },
                    "id": 2171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2238:42:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2172,
                  "nodeType": "ExpressionStatement",
                  "src": "2238:42:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2176,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15296,
                        "src": "2311:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KitBase_$2191",
                          "typeString": "contract KitBase"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2177,
                        "name": "app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2160,
                        "src": "2317:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2178,
                        "name": "permission",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2162,
                        "src": "2322:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_KitBase_$2191",
                          "typeString": "contract KitBase"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2173,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2156,
                        "src": "2290:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2175,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "revokePermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8156,
                      "src": "2290:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,bytes32) external"
                      }
                    },
                    "id": 2179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2290:43:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2180,
                  "nodeType": "ExpressionStatement",
                  "src": "2290:43:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2184,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2158,
                        "src": "2368:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2185,
                        "name": "app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2160,
                        "src": "2374:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2186,
                        "name": "permission",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2162,
                        "src": "2379:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2181,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2156,
                        "src": "2343:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2183,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setPermissionManager",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8176,
                      "src": "2343:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,bytes32) external"
                      }
                    },
                    "id": 2187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2343:47:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2188,
                  "nodeType": "ExpressionStatement",
                  "src": "2343:47:1"
                }
              ]
            },
            "documentation": null,
            "id": 2190,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "cleanupPermission",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2156,
                  "name": "acl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2190,
                  "src": "2163:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ACL_$9152",
                    "typeString": "contract ACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2155,
                    "name": "ACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9152,
                    "src": "2163:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2158,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2190,
                  "src": "2172:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2157,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2172:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2160,
                  "name": "app",
                  "nodeType": "VariableDeclaration",
                  "scope": 2190,
                  "src": "2186:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2159,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2186:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2162,
                  "name": "permission",
                  "nodeType": "VariableDeclaration",
                  "scope": 2190,
                  "src": "2199:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2161,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2199:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2162:56:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2164,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2228:0:1"
            },
            "scope": 2191,
            "src": "2136:261:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2861,
        "src": "1036:1363:1"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2192,
              "name": "KitBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2191,
              "src": "2425:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KitBase_$2191",
                "typeString": "contract KitBase"
              }
            },
            "id": 2193,
            "nodeType": "InheritanceSpecifier",
            "src": "2425:7:1"
          }
        ],
        "contractDependencies": [
          2035,
          2191,
          6724,
          9716,
          11850
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2860,
        "linearizedBaseContracts": [
          2860,
          2191,
          11850,
          9716
        ],
        "name": "PayrollKit",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2195,
            "name": "tokenFactory",
            "nodeType": "VariableDeclaration",
            "scope": 2860,
            "src": "2439:31:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
              "typeString": "contract MiniMeTokenFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 2194,
              "name": "MiniMeTokenFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6724,
              "src": "2439:18:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                "typeString": "contract MiniMeTokenFactory"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2198,
            "name": "FINANCE_PERIOD_DURATION",
            "nodeType": "VariableDeclaration",
            "scope": 2860,
            "src": "2477:59:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2196,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2477:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3331353537363030",
              "id": 2197,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2528:8:1",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_31557600_by_1",
                "typeString": "int_const 31557600"
              },
              "value": "31557600"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2201,
            "name": "RATE_EXPIRY_TIME",
            "nodeType": "VariableDeclaration",
            "scope": 2860,
            "src": "2542:48:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2199,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2542:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31303030",
              "id": 2200,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2586:4:1",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000_by_1",
                "typeString": "int_const 1000"
              },
              "value": "1000"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2207,
            "name": "MAX_UINT64",
            "nodeType": "VariableDeclaration",
            "scope": 2860,
            "src": "2596:48:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2202,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2596:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "id": 2205,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "nodeType": "UnaryOperation",
                  "operator": "-",
                  "prefix": true,
                  "src": "2641:2:1",
                  "subExpression": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 2204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2642:1:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_-1_by_1",
                    "typeString": "int_const -1"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_-1_by_1",
                    "typeString": "int_const -1"
                  }
                ],
                "id": 2203,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "2634:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_uint64_$",
                  "typeString": "type(uint64)"
                },
                "typeName": "uint64"
              },
              "id": 2206,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "2634:10:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2224,
              "nodeType": "Block",
              "src": "2707:56:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2218,
                      "name": "tokenFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2195,
                      "src": "2717:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                        "typeString": "contract MiniMeTokenFactory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 2220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "2732:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_MiniMeTokenFactory_$6724_$",
                          "typeString": "function () returns (contract MiniMeTokenFactory)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2219,
                          "name": "MiniMeTokenFactory",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6724,
                          "src": "2736:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                            "typeString": "contract MiniMeTokenFactory"
                          }
                        }
                      },
                      "id": 2221,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2732:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                        "typeString": "contract MiniMeTokenFactory"
                      }
                    },
                    "src": "2717:39:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                      "typeString": "contract MiniMeTokenFactory"
                    }
                  },
                  "id": 2223,
                  "nodeType": "ExpressionStatement",
                  "src": "2717:39:1"
                }
              ]
            },
            "documentation": null,
            "id": 2225,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2213,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2691:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2212,
                      "name": "DAOFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12439,
                      "src": "2680:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DAOFactory_$12439_$",
                        "typeString": "type(contract DAOFactory)"
                      }
                    },
                    "id": 2214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2680:13:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DAOFactory_$12439",
                      "typeString": "contract DAOFactory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 2215,
                    "name": "ens",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2209,
                    "src": "2695:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$13457",
                      "typeString": "contract ENS"
                    }
                  }
                ],
                "id": 2216,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2211,
                  "name": "KitBase",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2191,
                  "src": "2672:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_KitBase_$2191_$",
                    "typeString": "type(contract KitBase)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2672:27:1"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2209,
                  "name": "ens",
                  "nodeType": "VariableDeclaration",
                  "scope": 2225,
                  "src": "2663:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$13457",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2208,
                    "name": "ENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13457,
                    "src": "2663:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$13457",
                      "typeString": "contract ENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2662:9:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2217,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2707:0:1"
            },
            "scope": 2860,
            "src": "2651:112:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2392,
              "nodeType": "Block",
              "src": "2857:1394:1",
              "statements": [
                {
                  "assignments": [
                    2233
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2233,
                      "name": "root",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "2867:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2232,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2867:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2236,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2234,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15153,
                      "src": "2882:3:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 2235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "2882:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2867:25:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2237,
                      "name": "dao",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2228,
                      "src": "2903:3:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Kernel_$13092",
                        "typeString": "contract Kernel"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2240,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15298,
                          "src": "2920:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PayrollKit_$2860",
                            "typeString": "contract PayrollKit"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_PayrollKit_$2860",
                            "typeString": "contract PayrollKit"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2238,
                          "name": "fac",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2043,
                          "src": "2909:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DAOFactory_$12439",
                            "typeString": "contract DAOFactory"
                          }
                        },
                        "id": 2239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "newDAO",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12438,
                        "src": "2909:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_contract$_Kernel_$13092_$",
                          "typeString": "function (address) external returns (contract Kernel)"
                        }
                      },
                      "id": 2241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2909:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Kernel_$13092",
                        "typeString": "contract Kernel"
                      }
                    },
                    "src": "2903:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "id": 2243,
                  "nodeType": "ExpressionStatement",
                  "src": "2903:22:1"
                },
                {
                  "assignments": [
                    2245
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2245,
                      "name": "acl",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "2935:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ACL_$9152",
                        "typeString": "contract ACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2244,
                        "name": "ACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9152,
                        "src": "2935:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2251,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2247,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2228,
                            "src": "2949:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "acl",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12962,
                          "src": "2949:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IACL_$9673_$",
                            "typeString": "function () view external returns (contract IACL)"
                          }
                        },
                        "id": 2249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2949:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 2246,
                      "name": "ACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9152,
                      "src": "2945:3:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ACL_$9152_$",
                        "typeString": "type(contract ACL)"
                      }
                    },
                    "id": 2250,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2945:14:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2935:24:1"
                },
                {
                  "assignments": [
                    2253
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2253,
                      "name": "priceFeed",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3003:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_PPFMock_$2035",
                        "typeString": "contract PPFMock"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2252,
                        "name": "PPFMock",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2035,
                        "src": "3003:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PPFMock_$2035",
                          "typeString": "contract PPFMock"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2257,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2255,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3023:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_PPFMock_$2035_$",
                        "typeString": "function () returns (contract PPFMock)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2254,
                        "name": "PPFMock",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2035,
                        "src": "3027:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PPFMock_$2035",
                          "typeString": "contract PPFMock"
                        }
                      }
                    },
                    "id": 2256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3023:13:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PPFMock_$2035",
                      "typeString": "contract PPFMock"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3003:33:1"
                },
                {
                  "assignments": [
                    2259
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2259,
                      "name": "denominationToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3046:29:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2258,
                        "name": "MiniMeToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6683,
                        "src": "3046:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2264,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "55534420446f6c6c6172",
                        "id": 2261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3087:12:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6b52aa0d1b6be2149867505593105760bd4f909dd841e4604d02ec4a9811d41c",
                          "typeString": "literal_string \"USD Dollar\""
                        },
                        "value": "USD Dollar"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555344",
                        "id": 2262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3101:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e",
                          "typeString": "literal_string \"USD\""
                        },
                        "value": "USD"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_6b52aa0d1b6be2149867505593105760bd4f909dd841e4604d02ec4a9811d41c",
                          "typeString": "literal_string \"USD Dollar\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e",
                          "typeString": "literal_string \"USD\""
                        }
                      ],
                      "id": 2260,
                      "name": "newToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2706,
                      "src": "3078:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_MiniMeToken_$6683_$",
                        "typeString": "function (string memory,string memory) returns (contract MiniMeToken)"
                      }
                    },
                    "id": 2263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3078:29:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3046:61:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2268,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "3198:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2269,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "3204:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2270,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2228,
                            "src": "3209:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "APP_MANAGER_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12634,
                          "src": "3209:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3209:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2273,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "3233:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2265,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "3177:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "3177:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2274,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3177:61:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2275,
                  "nodeType": "ExpressionStatement",
                  "src": "3177:61:1"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2277,
                      "name": "vault",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3249:11:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Vault_$7857",
                        "typeString": "contract Vault"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2276,
                        "name": "Vault",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7857,
                        "src": "3249:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2278,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3249:11:1"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2280,
                      "name": "finance",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3270:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Finance_$5528",
                        "typeString": "contract Finance"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2279,
                        "name": "Finance",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5528,
                        "src": "3270:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2281,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3270:15:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 2282,
                          "name": "vault",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2277,
                          "src": "3296:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Vault_$7857",
                            "typeString": "contract Vault"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2283,
                          "name": "finance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2280,
                          "src": "3303:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Finance_$5528",
                            "typeString": "contract Finance"
                          }
                        }
                      ],
                      "id": 2284,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "3295:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_contract$_Vault_$7857_$_t_contract$_Finance_$5528_$",
                        "typeString": "tuple(contract Vault,contract Finance)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2286,
                          "name": "dao",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2228,
                          "src": "3330:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2287,
                          "name": "acl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2245,
                          "src": "3335:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ACL_$9152",
                            "typeString": "contract ACL"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2288,
                          "name": "root",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2233,
                          "src": "3340:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_contract$_ACL_$9152",
                            "typeString": "contract ACL"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2285,
                        "name": "installBaseApps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2480,
                        "src": "3314:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$returns$_t_contract$_Vault_$7857_$_t_contract$_Finance_$5528_$",
                          "typeString": "function (contract Kernel,contract ACL,address) returns (contract Vault,contract Finance)"
                        }
                      },
                      "id": 2289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3314:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_contract$_Vault_$7857_$_t_contract$_Finance_$5528_$",
                        "typeString": "tuple(contract Vault,contract Finance)"
                      }
                    },
                    "src": "3295:50:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2291,
                  "nodeType": "ExpressionStatement",
                  "src": "3295:50:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2301,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2292,
                      "name": "payroll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2230,
                      "src": "3355:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Payroll_$1984",
                        "typeString": "contract Payroll"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2294,
                          "name": "dao",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2228,
                          "src": "3380:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2295,
                          "name": "acl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2245,
                          "src": "3385:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ACL_$9152",
                            "typeString": "contract ACL"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2296,
                          "name": "root",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2233,
                          "src": "3390:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2297,
                          "name": "finance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2280,
                          "src": "3396:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Finance_$5528",
                            "typeString": "contract Finance"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2298,
                          "name": "denominationToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2259,
                          "src": "3405:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2299,
                          "name": "priceFeed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2253,
                          "src": "3424:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PPFMock_$2035",
                            "typeString": "contract PPFMock"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_contract$_ACL_$9152",
                            "typeString": "contract ACL"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_contract$_Finance_$5528",
                            "typeString": "contract Finance"
                          },
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          },
                          {
                            "typeIdentifier": "t_contract$_PPFMock_$2035",
                            "typeString": "contract PPFMock"
                          }
                        ],
                        "id": 2293,
                        "name": "installPayroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2576,
                        "src": "3365:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$_t_contract$_Finance_$5528_$_t_contract$_MiniMeToken_$6683_$_t_contract$_IFeed_$14313_$returns$_t_contract$_Payroll_$1984_$",
                          "typeString": "function (contract Kernel,contract ACL,address,contract Finance,contract MiniMeToken,contract IFeed) returns (contract Payroll)"
                        }
                      },
                      "id": 2300,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3365:69:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Payroll_$1984",
                        "typeString": "contract Payroll"
                      }
                    },
                    "src": "3355:79:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "id": 2302,
                  "nodeType": "ExpressionStatement",
                  "src": "3355:79:1"
                },
                {
                  "assignments": [
                    2304
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2304,
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3478:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2303,
                        "name": "MiniMeToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6683,
                        "src": "3478:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2313,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2306,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "3519:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2307,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "3524:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2308,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "3529:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2309,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2280,
                        "src": "3535:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6b656e2031",
                        "id": 2310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3544:9:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5eacce6c95f6838cd10e92f48b0d82f4df03d4ad1e947ebc0e9a235c5ef43194",
                          "typeString": "literal_string \"Token 1\""
                        },
                        "value": "Token 1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "544b31",
                        "id": 2311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3555:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5b8aad1af7a7755755e7bb029b1842c4b2be55785a56f5cdd5c01bcfa66dcc99",
                          "typeString": "literal_string \"TK1\""
                        },
                        "value": "TK1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5eacce6c95f6838cd10e92f48b0d82f4df03d4ad1e947ebc0e9a235c5ef43194",
                          "typeString": "literal_string \"Token 1\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5b8aad1af7a7755755e7bb029b1842c4b2be55785a56f5cdd5c01bcfa66dcc99",
                          "typeString": "literal_string \"TK1\""
                        }
                      ],
                      "id": 2305,
                      "name": "installManagedToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2682,
                      "src": "3499:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$_t_contract$_Finance_$5528_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_MiniMeToken_$6683_$",
                        "typeString": "function (contract Kernel,contract ACL,address,contract Finance,string memory,string memory) returns (contract MiniMeToken)"
                      }
                    },
                    "id": 2312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3499:62:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3478:83:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2317,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2304,
                        "src": "3595:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3603:4:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2314,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "3571:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2316,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setAllowedToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 382,
                      "src": "3571:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,bool) external"
                      }
                    },
                    "id": 2319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3571:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2320,
                  "nodeType": "ExpressionStatement",
                  "src": "3571:37:1"
                },
                {
                  "assignments": [
                    2322
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2322,
                      "name": "token2",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3619:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2321,
                        "name": "MiniMeToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6683,
                        "src": "3619:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2331,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2324,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "3660:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2325,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "3665:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2326,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "3670:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2327,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2280,
                        "src": "3676:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6b656e2032",
                        "id": 2328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3685:9:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c751b5b68c0ab3f6eca892f0f099d5a090c64dfe42ad9cf60707ee1cc8d081d8",
                          "typeString": "literal_string \"Token 2\""
                        },
                        "value": "Token 2"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "544b32",
                        "id": 2329,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3696:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4920950a4ac3f0a942c5d360e7c2a1d6ac16f7927b94c5d1ace156c93112a152",
                          "typeString": "literal_string \"TK2\""
                        },
                        "value": "TK2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c751b5b68c0ab3f6eca892f0f099d5a090c64dfe42ad9cf60707ee1cc8d081d8",
                          "typeString": "literal_string \"Token 2\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4920950a4ac3f0a942c5d360e7c2a1d6ac16f7927b94c5d1ace156c93112a152",
                          "typeString": "literal_string \"TK2\""
                        }
                      ],
                      "id": 2323,
                      "name": "installManagedToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2682,
                      "src": "3640:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$_t_contract$_Finance_$5528_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_MiniMeToken_$6683_$",
                        "typeString": "function (contract Kernel,contract ACL,address,contract Finance,string memory,string memory) returns (contract MiniMeToken)"
                      }
                    },
                    "id": 2330,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3640:62:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3619:83:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2335,
                        "name": "token2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2322,
                        "src": "3736:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3744:4:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2332,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "3712:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setAllowedToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 382,
                      "src": "3712:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,bool) external"
                      }
                    },
                    "id": 2337,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3712:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2338,
                  "nodeType": "ExpressionStatement",
                  "src": "3712:37:1"
                },
                {
                  "assignments": [
                    2340
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2340,
                      "name": "token3",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3760:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2339,
                        "name": "MiniMeToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6683,
                        "src": "3760:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2349,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2342,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "3801:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2343,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "3806:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2344,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "3811:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2345,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2280,
                        "src": "3817:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6b656e2033",
                        "id": 2346,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3826:9:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_57491824fcb3f02d12c71479511f447bd2617e2fb2c579357821dbff760f2b99",
                          "typeString": "literal_string \"Token 3\""
                        },
                        "value": "Token 3"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "544b33",
                        "id": 2347,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3837:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ff513019c6e0a94954db08bafee0c1d15ae9bbc88b847489251a31df275f0089",
                          "typeString": "literal_string \"TK3\""
                        },
                        "value": "TK3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_57491824fcb3f02d12c71479511f447bd2617e2fb2c579357821dbff760f2b99",
                          "typeString": "literal_string \"Token 3\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ff513019c6e0a94954db08bafee0c1d15ae9bbc88b847489251a31df275f0089",
                          "typeString": "literal_string \"TK3\""
                        }
                      ],
                      "id": 2341,
                      "name": "installManagedToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2682,
                      "src": "3781:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$_t_contract$_Finance_$5528_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_MiniMeToken_$6683_$",
                        "typeString": "function (contract Kernel,contract ACL,address,contract Finance,string memory,string memory) returns (contract MiniMeToken)"
                      }
                    },
                    "id": 2348,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3781:62:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3760:83:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2353,
                        "name": "token3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2340,
                        "src": "3877:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3885:4:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2350,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "3853:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2352,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setAllowedToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 382,
                      "src": "3853:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,bool) external"
                      }
                    },
                    "id": 2355,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3853:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2356,
                  "nodeType": "ExpressionStatement",
                  "src": "3853:37:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2358,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "3950:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2359,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "3959:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2360,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2304,
                        "src": "3965:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2361,
                        "name": "token2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2322,
                        "src": "3973:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      ],
                      "id": 2357,
                      "name": "addEmployees",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2859,
                      "src": "3937:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Payroll_$1984_$_t_address_$_t_contract$_MiniMeToken_$6683_$_t_contract$_MiniMeToken_$6683_$returns$__$",
                        "typeString": "function (contract Payroll,address,contract MiniMeToken,contract MiniMeToken)"
                      }
                    },
                    "id": 2362,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3937:43:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2363,
                  "nodeType": "ExpressionStatement",
                  "src": "3937:43:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2365,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "4033:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2366,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "4038:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2367,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "4043:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2364,
                      "name": "cleanupDAOPermissions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2154,
                      "src": "4011:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$returns$__$",
                        "typeString": "function (contract Kernel,contract ACL,address)"
                      }
                    },
                    "id": 2368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4011:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2369,
                  "nodeType": "ExpressionStatement",
                  "src": "4011:37:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2371,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "4076:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2372,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "4081:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2373,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "4087:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2374,
                            "name": "payroll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2230,
                            "src": "4096:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Payroll_$1984",
                              "typeString": "contract Payroll"
                            }
                          },
                          "id": 2375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "MANAGE_ALLOWED_TOKENS_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 41,
                          "src": "4096:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4096:36:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2370,
                      "name": "cleanupPermission",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2190,
                      "src": "4058:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ACL_$9152_$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract ACL,address,address,bytes32)"
                      }
                    },
                    "id": 2377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4058:75:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2378,
                  "nodeType": "ExpressionStatement",
                  "src": "4058:75:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2380,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "4161:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2381,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "4166:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2382,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "4172:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2383,
                            "name": "payroll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2230,
                            "src": "4181:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Payroll_$1984",
                              "typeString": "contract Payroll"
                            }
                          },
                          "id": 2384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ADD_EMPLOYEE_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26,
                          "src": "4181:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4181:27:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2379,
                      "name": "cleanupPermission",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2190,
                      "src": "4143:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ACL_$9152_$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract ACL,address,address,bytes32)"
                      }
                    },
                    "id": 2386,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4143:66:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2387,
                  "nodeType": "ExpressionStatement",
                  "src": "4143:66:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2389,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "4240:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      ],
                      "id": 2388,
                      "name": "DeployInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2047,
                      "src": "4225:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 2390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4225:19:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2391,
                  "nodeType": "EmitStatement",
                  "src": "4220:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 2393,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2226,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2789:2:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2231,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2228,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2393,
                  "src": "2824:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2227,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "2824:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2230,
                  "name": "payroll",
                  "nodeType": "VariableDeclaration",
                  "scope": 2393,
                  "src": "2836:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Payroll_$1984",
                    "typeString": "contract Payroll"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2229,
                    "name": "Payroll",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1984,
                    "src": "2836:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2823:29:1"
            },
            "scope": 2860,
            "src": "2769:1482:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2479,
              "nodeType": "Block",
              "src": "4351:609:1",
              "statements": [
                {
                  "assignments": [
                    2407
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2407,
                      "name": "vaultAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2480,
                      "src": "4361:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2406,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4361:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2411,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "7661756c74",
                        "id": 2409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4394:7:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_23c14fceac7676b670aa56866076586ea1ce15ddcf19208ec6346cf748dffbee",
                          "typeString": "literal_string \"vault\""
                        },
                        "value": "vault"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_23c14fceac7676b670aa56866076586ea1ce15ddcf19208ec6346cf748dffbee",
                          "typeString": "literal_string \"vault\""
                        }
                      ],
                      "id": 2408,
                      "name": "apmNamehash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9715,
                      "src": "4382:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4382:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4361:41:1"
                },
                {
                  "assignments": [
                    2413
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2413,
                      "name": "financeAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2480,
                      "src": "4412:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2412,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4412:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2417,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66696e616e6365",
                        "id": 2415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4447:9:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2af4c2fb0d9965fa818b9c58b2744b328ab67b082ec92907629457399dacdb35",
                          "typeString": "literal_string \"finance\""
                        },
                        "value": "finance"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_2af4c2fb0d9965fa818b9c58b2744b328ab67b082ec92907629457399dacdb35",
                          "typeString": "literal_string \"finance\""
                        }
                      ],
                      "id": 2414,
                      "name": "apmNamehash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9715,
                      "src": "4435:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4435:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4412:45:1"
                },
                {
                  "assignments": [
                    2419
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2419,
                      "name": "vault",
                      "nodeType": "VariableDeclaration",
                      "scope": 2480,
                      "src": "4468:11:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Vault_$7857",
                        "typeString": "contract Vault"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2418,
                        "name": "Vault",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7857,
                        "src": "4468:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2429,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2423,
                            "name": "vaultAppId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2407,
                            "src": "4507:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2425,
                                "name": "vaultAppId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2407,
                                "src": "4540:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 2424,
                              "name": "latestVersionAppBase",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2126,
                              "src": "4519:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 2426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4519:32:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2421,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2395,
                            "src": "4488:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "newAppInstance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12726,
                          "src": "4488:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_contract$_ERCProxy_$14225_$",
                            "typeString": "function (bytes32,address) external returns (contract ERCProxy)"
                          }
                        },
                        "id": 2427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4488:64:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      ],
                      "id": 2420,
                      "name": "Vault",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7857,
                      "src": "4482:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Vault_$7857_$",
                        "typeString": "type(contract Vault)"
                      }
                    },
                    "id": 2428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4482:71:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Vault_$7857",
                      "typeString": "contract Vault"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4468:85:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2431,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "4581:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2432,
                        "name": "vaultAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2407,
                        "src": "4588:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2430,
                      "name": "InstalledApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2053,
                      "src": "4568:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 2433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4568:31:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2434,
                  "nodeType": "EmitStatement",
                  "src": "4563:36:1"
                },
                {
                  "assignments": [
                    2436
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2436,
                      "name": "finance",
                      "nodeType": "VariableDeclaration",
                      "scope": 2480,
                      "src": "4610:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Finance_$5528",
                        "typeString": "contract Finance"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2435,
                        "name": "Finance",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5528,
                        "src": "4610:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2446,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2440,
                            "name": "financeAppId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2413,
                            "src": "4655:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2442,
                                "name": "financeAppId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2413,
                                "src": "4690:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 2441,
                              "name": "latestVersionAppBase",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2126,
                              "src": "4669:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 2443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4669:34:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2438,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2395,
                            "src": "4636:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "newAppInstance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12726,
                          "src": "4636:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_contract$_ERCProxy_$14225_$",
                            "typeString": "function (bytes32,address) external returns (contract ERCProxy)"
                          }
                        },
                        "id": 2444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4636:68:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      ],
                      "id": 2437,
                      "name": "Finance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5528,
                      "src": "4628:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Finance_$5528_$",
                        "typeString": "type(contract Finance)"
                      }
                    },
                    "id": 2445,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4628:77:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Finance_$5528",
                      "typeString": "contract Finance"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4610:95:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2448,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2436,
                        "src": "4733:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2449,
                        "name": "financeAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2413,
                        "src": "4742:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2447,
                      "name": "InstalledApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2053,
                      "src": "4720:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 2450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4720:35:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2451,
                  "nodeType": "EmitStatement",
                  "src": "4715:40:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2452,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "4766:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 2454,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7694,
                      "src": "4766:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 2455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4766:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2456,
                  "nodeType": "ExpressionStatement",
                  "src": "4766:18:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2460,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "4813:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2461,
                        "name": "FINANCE_PERIOD_DURATION",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2198,
                        "src": "4820:23:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2457,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2436,
                        "src": "4794:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      "id": 2459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3915,
                      "src": "4794:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Vault_$7857_$_t_uint64_$returns$__$",
                        "typeString": "function (contract Vault,uint64) external"
                      }
                    },
                    "id": 2462,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4794:50:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2463,
                  "nodeType": "ExpressionStatement",
                  "src": "4794:50:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2467,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2436,
                        "src": "4875:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2468,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "4884:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2469,
                            "name": "vault",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2419,
                            "src": "4891:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vault_$7857",
                              "typeString": "contract Vault"
                            }
                          },
                          "id": 2470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "TRANSFER_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7620,
                          "src": "4891:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4891:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2472,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2399,
                        "src": "4914:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2464,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2397,
                        "src": "4854:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2466,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "4854:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4854:65:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2474,
                  "nodeType": "ExpressionStatement",
                  "src": "4854:65:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2475,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "4938:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2476,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2436,
                        "src": "4945:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      }
                    ],
                    "id": 2477,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4937:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_contract$_Vault_$7857_$_t_contract$_Finance_$5528_$",
                      "typeString": "tuple(contract Vault,contract Finance)"
                    }
                  },
                  "functionReturnParameters": 2405,
                  "id": 2478,
                  "nodeType": "Return",
                  "src": "4930:23:1"
                }
              ]
            },
            "documentation": null,
            "id": 2480,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "installBaseApps",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2395,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2480,
                  "src": "4282:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2394,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "4282:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2397,
                  "name": "acl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2480,
                  "src": "4294:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ACL_$9152",
                    "typeString": "contract ACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2396,
                    "name": "ACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9152,
                    "src": "4294:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2399,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2480,
                  "src": "4303:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2398,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4303:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4281:35:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2402,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2480,
                  "src": "4335:5:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Vault_$7857",
                    "typeString": "contract Vault"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2401,
                    "name": "Vault",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7857,
                    "src": "4335:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Vault_$7857",
                      "typeString": "contract Vault"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2404,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2480,
                  "src": "4342:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Finance_$5528",
                    "typeString": "contract Finance"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2403,
                    "name": "Finance",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5528,
                    "src": "4342:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Finance_$5528",
                      "typeString": "contract Finance"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4334:16:1"
            },
            "scope": 2860,
            "src": "4257:703:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2575,
              "nodeType": "Block",
              "src": "5191:803:1",
              "statements": [
                {
                  "assignments": [
                    2498
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2498,
                      "name": "payrollAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2576,
                      "src": "5201:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2497,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5201:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2502,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "706179726f6c6c",
                        "id": 2500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5236:9:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5bcd5b7fba7251d646ed9eb72ccf3fcd7378e05364be626802394601d6d05a89",
                          "typeString": "literal_string \"payroll\""
                        },
                        "value": "payroll"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_5bcd5b7fba7251d646ed9eb72ccf3fcd7378e05364be626802394601d6d05a89",
                          "typeString": "literal_string \"payroll\""
                        }
                      ],
                      "id": 2499,
                      "name": "apmNamehash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9715,
                      "src": "5224:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5224:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5201:45:1"
                },
                {
                  "assignments": [
                    2504
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2504,
                      "name": "payroll",
                      "nodeType": "VariableDeclaration",
                      "scope": 2576,
                      "src": "5257:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Payroll_$1984",
                        "typeString": "contract Payroll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2503,
                        "name": "Payroll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1984,
                        "src": "5257:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2514,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2508,
                            "name": "payrollAppId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2498,
                            "src": "5302:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2510,
                                "name": "payrollAppId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2498,
                                "src": "5337:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 2509,
                              "name": "latestVersionAppBase",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2126,
                              "src": "5316:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 2511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5316:34:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2506,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2482,
                            "src": "5283:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "newAppInstance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12726,
                          "src": "5283:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_contract$_ERCProxy_$14225_$",
                            "typeString": "function (bytes32,address) external returns (contract ERCProxy)"
                          }
                        },
                        "id": 2512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5283:68:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      ],
                      "id": 2505,
                      "name": "Payroll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1984,
                      "src": "5275:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Payroll_$1984_$",
                        "typeString": "type(contract Payroll)"
                      }
                    },
                    "id": 2513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5275:77:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5257:95:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2516,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5380:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2517,
                        "name": "payrollAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2498,
                        "src": "5389:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2515,
                      "name": "InstalledApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2053,
                      "src": "5367:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 2518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5367:35:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2519,
                  "nodeType": "EmitStatement",
                  "src": "5362:40:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2523,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2488,
                        "src": "5432:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2524,
                        "name": "denominationToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2490,
                        "src": "5441:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2525,
                        "name": "priceFeed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2492,
                        "src": "5460:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IFeed_$14313",
                          "typeString": "contract IFeed"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2526,
                        "name": "RATE_EXPIRY_TIME",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2201,
                        "src": "5471:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_contract$_IFeed_$14313",
                          "typeString": "contract IFeed"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2520,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5413:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 348,
                      "src": "5413:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Finance_$5528_$_t_address_$_t_contract$_IFeed_$14313_$_t_uint64_$returns$__$",
                        "typeString": "function (contract Finance,address,contract IFeed,uint64) external"
                      }
                    },
                    "id": 2527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5413:75:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2528,
                  "nodeType": "ExpressionStatement",
                  "src": "5413:75:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2532,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5519:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2533,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2488,
                        "src": "5528:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2534,
                            "name": "finance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2488,
                            "src": "5537:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Finance_$5528",
                              "typeString": "contract Finance"
                            }
                          },
                          "id": 2535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "CREATE_PAYMENTS_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3521,
                          "src": "5537:28:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2536,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5537:30:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2537,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2486,
                        "src": "5569:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2529,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2484,
                        "src": "5498:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "5498:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5498:76:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2539,
                  "nodeType": "ExpressionStatement",
                  "src": "5498:76:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2543,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2486,
                        "src": "5605:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2544,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5611:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2545,
                            "name": "payroll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "5620:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Payroll_$1984",
                              "typeString": "contract Payroll"
                            }
                          },
                          "id": 2546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "TERMINATE_EMPLOYEE_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 29,
                          "src": "5620:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5620:33:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2548,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2486,
                        "src": "5655:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2540,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2484,
                        "src": "5584:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2542,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "5584:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5584:76:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2550,
                  "nodeType": "ExpressionStatement",
                  "src": "5584:76:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2554,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "5756:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2555,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5762:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2556,
                            "name": "payroll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "5771:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Payroll_$1984",
                              "typeString": "contract Payroll"
                            }
                          },
                          "id": 2557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "MANAGE_ALLOWED_TOKENS_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 41,
                          "src": "5771:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5771:36:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2559,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "5809:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2551,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2484,
                        "src": "5735:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2553,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "5735:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5735:79:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2561,
                  "nodeType": "ExpressionStatement",
                  "src": "5735:79:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2565,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "5913:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2566,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5919:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2567,
                            "name": "payroll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "5928:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Payroll_$1984",
                              "typeString": "contract Payroll"
                            }
                          },
                          "id": 2568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ADD_EMPLOYEE_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26,
                          "src": "5928:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5928:27:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2570,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "5957:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2562,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2484,
                        "src": "5892:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "5892:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5892:70:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2572,
                  "nodeType": "ExpressionStatement",
                  "src": "5892:70:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2573,
                    "name": "payroll",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2504,
                    "src": "5980:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "functionReturnParameters": 2496,
                  "id": 2574,
                  "nodeType": "Return",
                  "src": "5973:14:1"
                }
              ]
            },
            "documentation": null,
            "id": 2576,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "installPayroll",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2493,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2482,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "4999:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2481,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "4999:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2484,
                  "name": "acl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5019:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ACL_$9152",
                    "typeString": "contract ACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2483,
                    "name": "ACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9152,
                    "src": "5019:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2486,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5036:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2485,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5036:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2488,
                  "name": "finance",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5058:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Finance_$5528",
                    "typeString": "contract Finance"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2487,
                    "name": "Finance",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5528,
                    "src": "5058:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Finance_$5528",
                      "typeString": "contract Finance"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2490,
                  "name": "denominationToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5083:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2489,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "5083:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2492,
                  "name": "priceFeed",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5122:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IFeed_$14313",
                    "typeString": "contract IFeed"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2491,
                    "name": "IFeed",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14313,
                    "src": "5122:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IFeed_$14313",
                      "typeString": "contract IFeed"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4989:154:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2496,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2495,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5178:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Payroll_$1984",
                    "typeString": "contract Payroll"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2494,
                    "name": "Payroll",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1984,
                    "src": "5178:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5177:9:1"
            },
            "scope": 2860,
            "src": "4966:1028:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2681,
              "nodeType": "Block",
              "src": "6214:889:1",
              "statements": [
                {
                  "assignments": [
                    2594
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2594,
                      "name": "tokenManagerAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2682,
                      "src": "6224:25:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2593,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6224:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2598,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "746f6b656e2d6d616e61676572",
                        "id": 2596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6264:15:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_de5fa9c0ef6d18cdb8ef4461bfb45c94dc915629a2a1f311fb33838aff95436f",
                          "typeString": "literal_string \"token-manager\""
                        },
                        "value": "token-manager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_de5fa9c0ef6d18cdb8ef4461bfb45c94dc915629a2a1f311fb33838aff95436f",
                          "typeString": "literal_string \"token-manager\""
                        }
                      ],
                      "id": 2595,
                      "name": "apmNamehash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9715,
                      "src": "6252:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6252:28:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6224:56:1"
                },
                {
                  "assignments": [
                    2600
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2600,
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2682,
                      "src": "6291:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2599,
                        "name": "MiniMeToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6683,
                        "src": "6291:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2605,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2602,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2586,
                        "src": "6320:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2603,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2588,
                        "src": "6326:6:1",
                        "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": 2601,
                      "name": "newToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2706,
                      "src": "6311:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_MiniMeToken_$6683_$",
                        "typeString": "function (string memory,string memory) returns (contract MiniMeToken)"
                      }
                    },
                    "id": 2604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6311:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6291:42:1"
                },
                {
                  "assignments": [
                    2607
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2607,
                      "name": "tokenManager",
                      "nodeType": "VariableDeclaration",
                      "scope": 2682,
                      "src": "6343:25:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TokenManager_$7603",
                        "typeString": "contract TokenManager"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2606,
                        "name": "TokenManager",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7603,
                        "src": "6343:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2617,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2611,
                            "name": "tokenManagerAppId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2594,
                            "src": "6403:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2613,
                                "name": "tokenManagerAppId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2594,
                                "src": "6443:17:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 2612,
                              "name": "latestVersionAppBase",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2126,
                              "src": "6422:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 2614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6422:39:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2609,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2578,
                            "src": "6384:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "newAppInstance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12726,
                          "src": "6384:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_contract$_ERCProxy_$14225_$",
                            "typeString": "function (bytes32,address) external returns (contract ERCProxy)"
                          }
                        },
                        "id": 2615,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6384:78:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      ],
                      "id": 2608,
                      "name": "TokenManager",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7603,
                      "src": "6371:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_TokenManager_$7603_$",
                        "typeString": "type(contract TokenManager)"
                      }
                    },
                    "id": 2616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6371:92:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TokenManager_$7603",
                      "typeString": "contract TokenManager"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6343:120:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2619,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "6491:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2620,
                        "name": "tokenManagerAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2594,
                        "src": "6505:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2618,
                      "name": "InstalledApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2053,
                      "src": "6478:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 2621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6478:45:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2622,
                  "nodeType": "EmitStatement",
                  "src": "6473:50:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2626,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "6557:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2623,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2600,
                        "src": "6534:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 2625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "changeController",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5654,
                      "src": "6534:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 2627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6534:36:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2628,
                  "nodeType": "ExpressionStatement",
                  "src": "6534:36:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2632,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2600,
                        "src": "6604:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2633,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6611:4:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2634,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6617:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2629,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "6580:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      "id": 2631,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6926,
                      "src": "6580:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_MiniMeToken_$6683_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (contract MiniMeToken,bool,uint256) external"
                      }
                    },
                    "id": 2635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6580:39:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2636,
                  "nodeType": "ExpressionStatement",
                  "src": "6580:39:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2640,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "6705:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2641,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "6711:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2642,
                            "name": "tokenManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2607,
                            "src": "6725:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          },
                          "id": 2643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "MINT_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6750,
                          "src": "6725:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6725:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2645,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "6751:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2637,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2580,
                        "src": "6684:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2639,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "6684:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2646,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6684:72:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2647,
                  "nodeType": "ExpressionStatement",
                  "src": "6684:72:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2651,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "6838:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2652,
                        "name": "MAX_UINT64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2207,
                        "src": "6844:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2648,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "6820:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      "id": 2650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6954,
                      "src": "6820:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 2653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6820:35:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2654,
                  "nodeType": "ExpressionStatement",
                  "src": "6820:35:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2658,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2584,
                        "src": "6879:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2659,
                        "name": "MAX_UINT64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2207,
                        "src": "6888:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2655,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2600,
                        "src": "6865:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 2657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6022,
                      "src": "6865:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 2660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6865:34:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2661,
                  "nodeType": "ExpressionStatement",
                  "src": "6865:34:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2665,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2600,
                        "src": "6925:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2666,
                        "name": "MAX_UINT64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2207,
                        "src": "6932:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e697469616c206465706f736974",
                        "id": 2667,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6944:17:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_76f32e1a7ea729e419bd521d311325a6f5b2b24fc00ac96517473733fb8949dc",
                          "typeString": "literal_string \"Initial deposit\""
                        },
                        "value": "Initial deposit"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_76f32e1a7ea729e419bd521d311325a6f5b2b24fc00ac96517473733fb8949dc",
                          "typeString": "literal_string \"Initial deposit\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2662,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2584,
                        "src": "6909:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      "id": 2664,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3958,
                      "src": "6909:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,string memory) payable external"
                      }
                    },
                    "id": 2668,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6909:53:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2669,
                  "nodeType": "ExpressionStatement",
                  "src": "6909:53:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2671,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2580,
                        "src": "7023:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2672,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2582,
                        "src": "7028:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2673,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "7034:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2674,
                            "name": "tokenManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2607,
                            "src": "7048:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          },
                          "id": 2675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "MINT_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6750,
                          "src": "7048:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7048:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2670,
                      "name": "cleanupPermission",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2190,
                      "src": "7005:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ACL_$9152_$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract ACL,address,address,bytes32)"
                      }
                    },
                    "id": 2677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7005:68:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2678,
                  "nodeType": "ExpressionStatement",
                  "src": "7005:68:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2679,
                    "name": "token",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2600,
                    "src": "7091:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "functionReturnParameters": 2592,
                  "id": 2680,
                  "nodeType": "Return",
                  "src": "7084:12:1"
                }
              ]
            },
            "documentation": null,
            "id": 2682,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "installManagedToken",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2589,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2578,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6038:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2577,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "6038:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2580,
                  "name": "acl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6058:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ACL_$9152",
                    "typeString": "contract ACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2579,
                    "name": "ACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9152,
                    "src": "6058:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2582,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6075:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2581,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6075:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2584,
                  "name": "finance",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6097:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Finance_$5528",
                    "typeString": "contract Finance"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2583,
                    "name": "Finance",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5528,
                    "src": "6097:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Finance_$5528",
                      "typeString": "contract Finance"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2586,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6122:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2585,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6122:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2588,
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6143:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2587,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6143:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6028:134:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2591,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6197:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2590,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "6197:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6196:13:1"
            },
            "scope": 2860,
            "src": "6000:1103:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2705,
              "nodeType": "Block",
              "src": "7192:97:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2691,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2689,
                      "src": "7202:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7252:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2694,
                            "name": "MiniMeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6683,
                            "src": "7240:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MiniMeToken_$6683_$",
                              "typeString": "type(contract MiniMeToken)"
                            }
                          },
                          "id": 2696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7240:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7256:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "id": 2698,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2684,
                          "src": "7259:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "3138",
                          "id": 2699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7265:2:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        {
                          "argumentTypes": null,
                          "id": 2700,
                          "name": "symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2686,
                          "src": "7269:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7277:4:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2692,
                          "name": "tokenFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2195,
                          "src": "7210:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                            "typeString": "contract MiniMeTokenFactory"
                          }
                        },
                        "id": 2693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createCloneToken",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6723,
                        "src": "7210:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_contract$_MiniMeToken_$6683_$_t_uint256_$_t_string_memory_ptr_$_t_uint8_$_t_string_memory_ptr_$_t_bool_$returns$_t_contract$_MiniMeToken_$6683_$",
                          "typeString": "function (contract MiniMeToken,uint256,string memory,uint8,string memory,bool) external returns (contract MiniMeToken)"
                        }
                      },
                      "id": 2702,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7210:72:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "src": "7202:80:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "id": 2704,
                  "nodeType": "ExpressionStatement",
                  "src": "7202:80:1"
                }
              ]
            },
            "documentation": null,
            "id": 2706,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newToken",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2684,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "7127:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2683,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7127:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2686,
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "7140:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2685,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7140:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7126:28:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2690,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2689,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "7173:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2688,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "7173:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7172:19:1"
            },
            "scope": 2860,
            "src": "7109:180:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2858,
              "nodeType": "Block",
              "src": "7397:1300:1",
              "statements": [
                {
                  "assignments": [
                    2718
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2718,
                      "name": "account2",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7407:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2717,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7407:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2720,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "307838343031456235666633346363393433663039364133324546336435313133464562453844344562",
                    "id": 2719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7426:42:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "value": "0x8401Eb5ff34cc943f096A32EF3d5113FEbE8D4Eb"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7407:61:1"
                },
                {
                  "assignments": [
                    2722
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2722,
                      "name": "account3",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7478:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2721,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7478:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2724,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "307833303634363934353732363643424265376330353035653841616433353836323232333565373638",
                    "id": 2723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7497:42:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "value": "0x306469457266CBBe7c0505e8Aad358622235e768"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7478:61:1"
                },
                {
                  "assignments": [
                    2726
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2726,
                      "name": "account4",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7549:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2725,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7549:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2728,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "307864383733463644433638653330353765344237646137346336623330346430654630423438344337",
                    "id": 2727,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7568:42:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "value": "0xd873F6DC68e3057e4B7da74c6b304d0eF0B484C7"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7549:61:1"
                },
                {
                  "assignments": [
                    2730
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2730,
                      "name": "salary1",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7621:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2729,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7621:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2732,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "32353335303437303235313232333136",
                    "id": 2731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7639:16:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2535047025122316_by_1",
                      "typeString": "int_const 2535047025122316"
                    },
                    "value": "2535047025122316"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7621:34:1"
                },
                {
                  "assignments": [
                    2734
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2734,
                      "name": "salary2",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7674:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2733,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7674:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2736,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "32383531393237393033323632363035",
                    "id": 2735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7692:16:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2851927903262605_by_1",
                      "typeString": "int_const 2851927903262605"
                    },
                    "value": "2851927903262605"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7674:34:1"
                },
                {
                  "assignments": [
                    2738
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2738,
                      "name": "salary3",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7727:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2737,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7727:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2740,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "33313638383038373831343032383935",
                    "id": 2739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7745:16:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3168808781402895_by_1",
                      "typeString": "int_const 3168808781402895"
                    },
                    "value": "3168808781402895"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7727:34:1"
                },
                {
                  "assignments": [
                    2742
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2742,
                      "name": "salary4",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7781:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2741,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7781:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2744,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "32323138313636313436393832303236",
                    "id": 2743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7799:16:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2218166146982026_by_1",
                      "typeString": "int_const 2218166146982026"
                    },
                    "value": "2218166146982026"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7781:34:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2748,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "7960:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2749,
                        "name": "salary1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2730,
                        "src": "7966:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2751,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15155,
                              "src": "7982:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3836343030",
                              "id": 2752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7988:5:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              },
                              "value": "86400"
                            },
                            "src": "7982:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7975:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": "uint64"
                        },
                        "id": 2754,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7975:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43454f",
                        "id": 2755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7996:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dc0d7a095c4e917ecbeb7deda7c942ff9744013d419e37549215a413915e421d",
                          "typeString": "literal_string \"CEO\""
                        },
                        "value": "CEO"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dc0d7a095c4e917ecbeb7deda7c942ff9744013d419e37549215a413915e421d",
                          "typeString": "literal_string \"CEO\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2745,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "7940:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2747,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addEmployee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 449,
                      "src": "7940:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint64_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint64,string memory) external"
                      }
                    },
                    "id": 2756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7940:62:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2757,
                  "nodeType": "ExpressionStatement",
                  "src": "7940:62:1"
                },
                {
                  "assignments": [
                    2761
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2761,
                      "name": "allowedTokens",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "8013:30:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2759,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8013:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2760,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8013:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2767,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2765,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8060:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 2764,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "8046:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2762,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8050:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2763,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8050:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8046:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8013:49:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2768,
                        "name": "allowedTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2761,
                        "src": "8072:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2770,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8086:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8072:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2772,
                          "name": "token1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2712,
                          "src": "8099:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        ],
                        "id": 2771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8091:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2773,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8091:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "8072:34:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2775,
                  "nodeType": "ExpressionStatement",
                  "src": "8072:34:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2776,
                        "name": "allowedTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2761,
                        "src": "8116:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2778,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8130:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8116:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2780,
                          "name": "token2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2714,
                          "src": "8143:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        ],
                        "id": 2779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8135:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2781,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8135:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "8116:34:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2783,
                  "nodeType": "ExpressionStatement",
                  "src": "8116:34:1"
                },
                {
                  "assignments": [
                    2787
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2787,
                      "name": "distribution",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "8161:29:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2785,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8161:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2786,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8161:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2793,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2791,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8207:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 2790,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "8193:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2788,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8197:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2789,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8197:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 2792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8193:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8161:48:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2794,
                        "name": "distribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2787,
                        "src": "8219:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2796,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8232:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8219:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "3435",
                      "id": 2797,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8237:2:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_45_by_1",
                        "typeString": "int_const 45"
                      },
                      "value": "45"
                    },
                    "src": "8219:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2799,
                  "nodeType": "ExpressionStatement",
                  "src": "8219:20:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2800,
                        "name": "distribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2787,
                        "src": "8249:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2802,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8262:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8249:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "3535",
                      "id": 2803,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8267:2:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_55_by_1",
                        "typeString": "int_const 55"
                      },
                      "value": "55"
                    },
                    "src": "8249:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2805,
                  "nodeType": "ExpressionStatement",
                  "src": "8249:20:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2809,
                        "name": "allowedTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2761,
                        "src": "8308:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2810,
                        "name": "distribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2787,
                        "src": "8323:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2806,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "8280:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "determineAllocation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 737,
                      "src": "8280:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (address[] memory,uint256[] memory) external"
                      }
                    },
                    "id": 2811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8280:56:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2812,
                  "nodeType": "ExpressionStatement",
                  "src": "8280:56:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2816,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2710,
                        "src": "8378:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2813,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "8346:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2815,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "changeAddressByEmployee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 618,
                      "src": "8346:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 2817,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8346:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2818,
                  "nodeType": "ExpressionStatement",
                  "src": "8346:37:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2822,
                        "name": "account2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2718,
                        "src": "8466:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2823,
                        "name": "salary2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2734,
                        "src": "8476:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2825,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15155,
                              "src": "8492:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3836343030",
                              "id": 2826,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8498:5:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              },
                              "value": "86400"
                            },
                            "src": "8492:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8485:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": "uint64"
                        },
                        "id": 2828,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8485:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50726f6a656374204d616e61676572",
                        "id": 2829,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8506:17:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_adaf1d12fca5ce6fad6273b131177876cc8f9094eee130fa4b0b445ceabc4ee5",
                          "typeString": "literal_string \"Project Manager\""
                        },
                        "value": "Project Manager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_adaf1d12fca5ce6fad6273b131177876cc8f9094eee130fa4b0b445ceabc4ee5",
                          "typeString": "literal_string \"Project Manager\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2819,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "8446:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addEmployee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 449,
                      "src": "8446:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint64_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint64,string memory) external"
                      }
                    },
                    "id": 2830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8446:78:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2831,
                  "nodeType": "ExpressionStatement",
                  "src": "8446:78:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2835,
                        "name": "account3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2722,
                        "src": "8554:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2836,
                        "name": "salary3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2738,
                        "src": "8564:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2838,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15155,
                              "src": "8580:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "313732383030",
                              "id": 2839,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8586:6:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_172800_by_1",
                                "typeString": "int_const 172800"
                              },
                              "value": "172800"
                            },
                            "src": "8580:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8573:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": "uint64"
                        },
                        "id": 2841,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8573:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "446576656c6f706572",
                        "id": 2842,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8595:11:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e9382a7c65097a9587879afb193759dbfc4bfcfdf3e5a296379d7f2e1e5cacd1",
                          "typeString": "literal_string \"Developer\""
                        },
                        "value": "Developer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e9382a7c65097a9587879afb193759dbfc4bfcfdf3e5a296379d7f2e1e5cacd1",
                          "typeString": "literal_string \"Developer\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2832,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "8534:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2834,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addEmployee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 449,
                      "src": "8534:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint64_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint64,string memory) external"
                      }
                    },
                    "id": 2843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8534:73:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2844,
                  "nodeType": "ExpressionStatement",
                  "src": "8534:73:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2848,
                        "name": "account4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2726,
                        "src": "8637:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2849,
                        "name": "salary4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2742,
                        "src": "8647:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2851,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15155,
                              "src": "8663:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "313732383030",
                              "id": 2852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8669:6:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_172800_by_1",
                                "typeString": "int_const 172800"
                              },
                              "value": "172800"
                            },
                            "src": "8663:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8656:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": "uint64"
                        },
                        "id": 2854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8656:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "446576656c6f706572",
                        "id": 2855,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8678:11:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e9382a7c65097a9587879afb193759dbfc4bfcfdf3e5a296379d7f2e1e5cacd1",
                          "typeString": "literal_string \"Developer\""
                        },
                        "value": "Developer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e9382a7c65097a9587879afb193759dbfc4bfcfdf3e5a296379d7f2e1e5cacd1",
                          "typeString": "literal_string \"Developer\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2845,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "8617:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2847,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addEmployee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 449,
                      "src": "8617:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint64_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint64,string memory) external"
                      }
                    },
                    "id": 2856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8617:73:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2857,
                  "nodeType": "ExpressionStatement",
                  "src": "8617:73:1"
                }
              ]
            },
            "documentation": null,
            "id": 2859,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addEmployees",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2715,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2708,
                  "name": "payroll",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "7317:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Payroll_$1984",
                    "typeString": "contract Payroll"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2707,
                    "name": "Payroll",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1984,
                    "src": "7317:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2710,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "7334:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2709,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7334:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2712,
                  "name": "token1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "7348:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2711,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "7348:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2714,
                  "name": "token2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "7368:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2713,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "7368:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7316:71:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2716,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7397:0:1"
            },
            "scope": 2860,
            "src": "7295:1402:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2861,
        "src": "2402:6297:1"
      }
    ],
    "src": "0:8700:1"
  },
  "legacyAST": {
    "absolutePath": "/Users/facu/Documents/work/aragon/dev/aragon-apps/future-apps/payroll/contracts/examples/PayrollKit.sol",
    "exportedSymbols": {
      "KitBase": [
        2191
      ],
      "PPFMock": [
        2035
      ],
      "PayrollKit": [
        2860
      ]
    },
    "id": 2861,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1986,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:1"
      },
      {
        "absolutePath": "@aragon/apps-finance/contracts/Finance.sol",
        "file": "@aragon/apps-finance/contracts/Finance.sol",
        "id": 1987,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 5529,
        "src": "25:52:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "file": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "id": 1988,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 6725,
        "src": "78:62:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-vault/contracts/Vault.sol",
        "file": "@aragon/apps-vault/contracts/Vault.sol",
        "id": 1989,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 7858,
        "src": "141:48:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
        "file": "@aragon/os/contracts/acl/ACL.sol",
        "id": 1990,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 9153,
        "src": "190:42:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/apm/APMNamehash.sol",
        "file": "@aragon/os/contracts/apm/APMNamehash.sol",
        "id": 1991,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 9717,
        "src": "233:50:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/apm/Repo.sol",
        "file": "@aragon/os/contracts/apm/Repo.sol",
        "id": 1992,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 10110,
        "src": "284:43:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "id": 1993,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 11871,
        "src": "328:63:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/DAOFactory.sol",
        "file": "@aragon/os/contracts/factory/DAOFactory.sol",
        "id": 1994,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 12440,
        "src": "392:53:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
        "file": "@aragon/os/contracts/kernel/Kernel.sol",
        "id": 1995,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 13093,
        "src": "446:48:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/ENS.sol",
        "file": "@aragon/os/contracts/lib/ens/ENS.sol",
        "id": 1996,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 13458,
        "src": "495:46:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/PublicResolver.sol",
        "file": "@aragon/os/contracts/lib/ens/PublicResolver.sol",
        "id": 1997,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 13920,
        "src": "542:57:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/ppf-contracts/contracts/IFeed.sol",
        "file": "@aragon/ppf-contracts/contracts/IFeed.sol",
        "id": 1998,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 14314,
        "src": "600:51:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-token-manager/contracts/TokenManager.sol",
        "file": "@aragon/apps-token-manager/contracts/TokenManager.sol",
        "id": 1999,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 7604,
        "src": "652:63:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/facu/Documents/work/aragon/dev/aragon-apps/future-apps/payroll/contracts/Payroll.sol",
        "file": "../Payroll.sol",
        "id": 2000,
        "nodeType": "ImportDirective",
        "scope": 2861,
        "sourceUnit": 1985,
        "src": "717:24:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2001,
              "name": "IFeed",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14313,
              "src": "764:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IFeed_$14313",
                "typeString": "contract IFeed"
              }
            },
            "id": 2002,
            "nodeType": "InheritanceSpecifier",
            "src": "764:5:1"
          }
        ],
        "contractDependencies": [
          14313
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2035,
        "linearizedBaseContracts": [
          2035,
          14313
        ],
        "name": "PPFMock",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 2011,
              "nodeType": "Block",
              "src": "833:32:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "id": 2009,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 2007,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "850:2:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3138",
                      "id": 2008,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "856:2:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_18_by_1",
                        "typeString": "int_const 18"
                      },
                      "value": "18"
                    },
                    "src": "850:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  },
                  "functionReturnParameters": 2006,
                  "id": 2010,
                  "nodeType": "Return",
                  "src": "843:15:1"
                }
              ]
            },
            "documentation": null,
            "id": 2012,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ratePrecision",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2003,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "798:2:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2005,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2012,
                  "src": "824:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2004,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "824:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "823:9:1"
            },
            "scope": 2035,
            "src": "776:89:1",
            "stateMutability": "pure",
            "superFunction": 14301,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2033,
              "nodeType": "Block",
              "src": "951:80:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2023,
                      "name": "xrt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2019,
                      "src": "959:3:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "37353030303030303030303030303030",
                      "id": 2024,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "965:16:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_7500000000000000_by_1",
                        "typeString": "int_const 7500000000000000"
                      },
                      "value": "7500000000000000"
                    },
                    "src": "959:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2026,
                  "nodeType": "ExpressionStatement",
                  "src": "959:22:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2027,
                      "name": "when",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2021,
                      "src": "1008:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2029,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15155,
                          "src": "1022:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2028,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1015:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint64_$",
                          "typeString": "type(uint64)"
                        },
                        "typeName": "uint64"
                      },
                      "id": 2030,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1015:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "1008:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2032,
                  "nodeType": "ExpressionStatement",
                  "src": "1008:18:1"
                }
              ]
            },
            "documentation": null,
            "id": 2034,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2017,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2014,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "884:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2013,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "884:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2016,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "893:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2015,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "893:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "883:18:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2022,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2019,
                  "name": "xrt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "925:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2018,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "925:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2021,
                  "name": "when",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "938:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2020,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "938:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "924:26:1"
            },
            "scope": 2035,
            "src": "871:160:1",
            "stateMutability": "view",
            "superFunction": 14312,
            "visibility": "external"
          }
        ],
        "scope": 2861,
        "src": "744:289:1"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2036,
              "name": "APMNamehash",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9716,
              "src": "1056:11:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_APMNamehash_$9716",
                "typeString": "contract APMNamehash"
              }
            },
            "id": 2037,
            "nodeType": "InheritanceSpecifier",
            "src": "1056:11:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2038,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11850,
              "src": "1069:26:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$11850",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 2039,
            "nodeType": "InheritanceSpecifier",
            "src": "1069:26:1"
          }
        ],
        "contractDependencies": [
          9716,
          11850
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2191,
        "linearizedBaseContracts": [
          2191,
          11850,
          9716
        ],
        "name": "KitBase",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2041,
            "name": "ens",
            "nodeType": "VariableDeclaration",
            "scope": 2191,
            "src": "1102:14:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ENS_$13457",
              "typeString": "contract ENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 2040,
              "name": "ENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13457,
              "src": "1102:3:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENS_$13457",
                "typeString": "contract ENS"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2043,
            "name": "fac",
            "nodeType": "VariableDeclaration",
            "scope": 2191,
            "src": "1122:21:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_DAOFactory_$12439",
              "typeString": "contract DAOFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 2042,
              "name": "DAOFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12439,
              "src": "1122:10:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                "typeString": "contract DAOFactory"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2047,
            "name": "DeployInstance",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2045,
                  "indexed": false,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2047,
                  "src": "1171:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2044,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1171:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1170:13:1"
            },
            "src": "1150:34:1"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2053,
            "name": "InstalledApp",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2049,
                  "indexed": false,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 2053,
                  "src": "1208:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2048,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1208:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2051,
                  "indexed": false,
                  "name": "appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2053,
                  "src": "1226:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2050,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1226:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1207:33:1"
            },
            "src": "1189:52:1"
          },
          {
            "body": {
              "id": 2094,
              "nodeType": "Block",
              "src": "1293:307:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2060,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2041,
                      "src": "1303:3:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$13457",
                        "typeString": "contract ENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2061,
                      "name": "_ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2057,
                      "src": "1309:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$13457",
                        "typeString": "contract ENS"
                      }
                    },
                    "src": "1303:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$13457",
                      "typeString": "contract ENS"
                    }
                  },
                  "id": 2063,
                  "nodeType": "ExpressionStatement",
                  "src": "1303:10:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2065,
                          "name": "_fac",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2055,
                          "src": "1402:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DAOFactory_$12439",
                            "typeString": "contract DAOFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_DAOFactory_$12439",
                            "typeString": "contract DAOFactory"
                          }
                        ],
                        "id": 2064,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1394:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2066,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1394:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1419:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 2067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1411:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2069,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1411:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1394:27:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2092,
                    "nodeType": "Block",
                    "src": "1559:35:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2088,
                            "name": "fac",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2043,
                            "src": "1573:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOFactory_$12439",
                              "typeString": "contract DAOFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2089,
                            "name": "_fac",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2055,
                            "src": "1579:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOFactory_$12439",
                              "typeString": "contract DAOFactory"
                            }
                          },
                          "src": "1573:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DAOFactory_$12439",
                            "typeString": "contract DAOFactory"
                          }
                        },
                        "id": 2091,
                        "nodeType": "ExpressionStatement",
                        "src": "1573:10:1"
                      }
                    ]
                  },
                  "id": 2093,
                  "nodeType": "IfStatement",
                  "src": "1390:204:1",
                  "trueBody": {
                    "id": 2087,
                    "nodeType": "Block",
                    "src": "1423:130:1",
                    "statements": [
                      {
                        "assignments": [
                          2072
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2072,
                            "name": "bareKit",
                            "nodeType": "VariableDeclaration",
                            "scope": 2095,
                            "src": "1437:15:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2071,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1437:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2076,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "626172652d6b6974",
                              "id": 2074,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1467:10:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eae34e1d5adf3d84ddaf56c05425677b54d69a021ff0c01c8b5f2289b91a4e9f",
                                "typeString": "literal_string \"bare-kit\""
                              },
                              "value": "bare-kit"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_eae34e1d5adf3d84ddaf56c05425677b54d69a021ff0c01c8b5f2289b91a4e9f",
                                "typeString": "literal_string \"bare-kit\""
                              }
                            ],
                            "id": 2073,
                            "name": "apmNamehash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9715,
                            "src": "1455:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (string memory) pure returns (bytes32)"
                            }
                          },
                          "id": 2075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1455:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1437:41:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2077,
                            "name": "fac",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2043,
                            "src": "1492:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOFactory_$12439",
                              "typeString": "contract DAOFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2080,
                                        "name": "bareKit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2072,
                                        "src": "1527:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 2079,
                                      "name": "latestVersionAppBase",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2126,
                                      "src": "1506:20:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                        "typeString": "function (bytes32) view returns (address)"
                                      }
                                    },
                                    "id": 2081,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1506:29:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2078,
                                  "name": "KitBase",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2191,
                                  "src": "1498:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_KitBase_$2191_$",
                                    "typeString": "type(contract KitBase)"
                                  }
                                },
                                "id": 2082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1498:38:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_KitBase_$2191",
                                  "typeString": "contract KitBase"
                                }
                              },
                              "id": 2083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fac",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2043,
                              "src": "1498:42:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOFactory_$12439_$",
                                "typeString": "function () view external returns (contract DAOFactory)"
                              }
                            },
                            "id": 2084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1498:44:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOFactory_$12439",
                              "typeString": "contract DAOFactory"
                            }
                          },
                          "src": "1492:50:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DAOFactory_$12439",
                            "typeString": "contract DAOFactory"
                          }
                        },
                        "id": 2086,
                        "nodeType": "ExpressionStatement",
                        "src": "1492:50:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2095,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2058,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2055,
                  "name": "_fac",
                  "nodeType": "VariableDeclaration",
                  "scope": 2095,
                  "src": "1259:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DAOFactory_$12439",
                    "typeString": "contract DAOFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2054,
                    "name": "DAOFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12439,
                    "src": "1259:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DAOFactory_$12439",
                      "typeString": "contract DAOFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2057,
                  "name": "_ens",
                  "nodeType": "VariableDeclaration",
                  "scope": 2095,
                  "src": "1276:8:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$13457",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2056,
                    "name": "ENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13457,
                    "src": "1276:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$13457",
                      "typeString": "contract ENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1258:27:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2059,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1293:0:1"
            },
            "scope": 2191,
            "src": "1247:353:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2125,
              "nodeType": "Block",
              "src": "1686:141:1",
              "statements": [
                {
                  "assignments": [
                    2103
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2103,
                      "name": "repo",
                      "nodeType": "VariableDeclaration",
                      "scope": 2126,
                      "src": "1696:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Repo_$10109",
                        "typeString": "contract Repo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2102,
                        "name": "Repo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10109,
                        "src": "1696:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Repo_$10109",
                          "typeString": "contract Repo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2115,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2112,
                            "name": "appId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2097,
                            "src": "1754:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2108,
                                    "name": "appId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2097,
                                    "src": "1741:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2106,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2041,
                                    "src": "1728:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$13457",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 2107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "resolver",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13342,
                                  "src": "1728:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32) view external returns (address)"
                                  }
                                },
                                "id": 2109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1728:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2105,
                              "name": "PublicResolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13919,
                              "src": "1713:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PublicResolver_$13919_$",
                                "typeString": "type(contract PublicResolver)"
                              }
                            },
                            "id": 2110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1713:35:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PublicResolver_$13919",
                              "typeString": "contract PublicResolver"
                            }
                          },
                          "id": 2111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "addr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13625,
                          "src": "1713:40:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 2113,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1713:47:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2104,
                      "name": "Repo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10109,
                      "src": "1708:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Repo_$10109_$",
                        "typeString": "type(contract Repo)"
                      }
                    },
                    "id": 2114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1708:53:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Repo_$10109",
                      "typeString": "contract Repo"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1696:65:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        null,
                        {
                          "argumentTypes": null,
                          "id": 2116,
                          "name": "base",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2100,
                          "src": "1773:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        null
                      ],
                      "id": 2117,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "1771:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$_t_address_$__$",
                        "typeString": "tuple(,address,)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2118,
                          "name": "repo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2103,
                          "src": "1782:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Repo_$10109",
                            "typeString": "contract Repo"
                          }
                        },
                        "id": 2119,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getLatest",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9913,
                        "src": "1782:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                          "typeString": "function () view external returns (uint16[3] memory,address,bytes memory)"
                        }
                      },
                      "id": 2120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1782:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(uint16[3] memory,address,bytes memory)"
                      }
                    },
                    "src": "1771:27:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2122,
                  "nodeType": "ExpressionStatement",
                  "src": "1771:27:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2123,
                    "name": "base",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2100,
                    "src": "1816:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2101,
                  "id": 2124,
                  "nodeType": "Return",
                  "src": "1809:11:1"
                }
              ]
            },
            "documentation": null,
            "id": 2126,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "latestVersionAppBase",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2098,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2097,
                  "name": "appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2126,
                  "src": "1636:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2096,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1636:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1635:15:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2101,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2100,
                  "name": "base",
                  "nodeType": "VariableDeclaration",
                  "scope": 2126,
                  "src": "1672:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2099,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1672:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1671:14:1"
            },
            "scope": 2191,
            "src": "1606:221:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2153,
              "nodeType": "Block",
              "src": "1908:222:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2136,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2130,
                        "src": "1974:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2137,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2132,
                        "src": "1979:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2138,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2128,
                        "src": "1985:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2139,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2128,
                            "src": "1990:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "APP_MANAGER_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12634,
                          "src": "1990:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1990:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2135,
                      "name": "cleanupPermission",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2190,
                      "src": "1956:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ACL_$9152_$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract ACL,address,address,bytes32)"
                      }
                    },
                    "id": 2142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1956:57:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2143,
                  "nodeType": "ExpressionStatement",
                  "src": "1956:57:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2145,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2130,
                        "src": "2077:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2146,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2132,
                        "src": "2082:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2147,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2130,
                        "src": "2088:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2148,
                            "name": "acl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2130,
                            "src": "2093:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ACL_$9152",
                              "typeString": "contract ACL"
                            }
                          },
                          "id": 2149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "CREATE_PERMISSIONS_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7876,
                          "src": "2093:27:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2093:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2144,
                      "name": "cleanupPermission",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2190,
                      "src": "2059:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ACL_$9152_$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract ACL,address,address,bytes32)"
                      }
                    },
                    "id": 2151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2059:64:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2152,
                  "nodeType": "ExpressionStatement",
                  "src": "2059:64:1"
                }
              ]
            },
            "documentation": null,
            "id": 2154,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "cleanupDAOPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2128,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2154,
                  "src": "1864:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2127,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "1864:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2130,
                  "name": "acl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2154,
                  "src": "1876:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ACL_$9152",
                    "typeString": "contract ACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2129,
                    "name": "ACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9152,
                    "src": "1876:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2132,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2154,
                  "src": "1885:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2131,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1885:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1863:35:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2134,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1908:0:1"
            },
            "scope": 2191,
            "src": "1833:297:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2189,
              "nodeType": "Block",
              "src": "2228:169:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2168,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2158,
                        "src": "2258:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2169,
                        "name": "app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2160,
                        "src": "2264:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2170,
                        "name": "permission",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2162,
                        "src": "2269:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2165,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2156,
                        "src": "2238:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "grantPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8099,
                      "src": "2238:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,bytes32) external"
                      }
                    },
                    "id": 2171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2238:42:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2172,
                  "nodeType": "ExpressionStatement",
                  "src": "2238:42:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2176,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15296,
                        "src": "2311:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KitBase_$2191",
                          "typeString": "contract KitBase"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2177,
                        "name": "app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2160,
                        "src": "2317:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2178,
                        "name": "permission",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2162,
                        "src": "2322:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_KitBase_$2191",
                          "typeString": "contract KitBase"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2173,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2156,
                        "src": "2290:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2175,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "revokePermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8156,
                      "src": "2290:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,bytes32) external"
                      }
                    },
                    "id": 2179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2290:43:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2180,
                  "nodeType": "ExpressionStatement",
                  "src": "2290:43:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2184,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2158,
                        "src": "2368:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2185,
                        "name": "app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2160,
                        "src": "2374:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2186,
                        "name": "permission",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2162,
                        "src": "2379:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2181,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2156,
                        "src": "2343:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2183,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setPermissionManager",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8176,
                      "src": "2343:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,bytes32) external"
                      }
                    },
                    "id": 2187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2343:47:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2188,
                  "nodeType": "ExpressionStatement",
                  "src": "2343:47:1"
                }
              ]
            },
            "documentation": null,
            "id": 2190,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "cleanupPermission",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2156,
                  "name": "acl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2190,
                  "src": "2163:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ACL_$9152",
                    "typeString": "contract ACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2155,
                    "name": "ACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9152,
                    "src": "2163:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2158,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2190,
                  "src": "2172:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2157,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2172:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2160,
                  "name": "app",
                  "nodeType": "VariableDeclaration",
                  "scope": 2190,
                  "src": "2186:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2159,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2186:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2162,
                  "name": "permission",
                  "nodeType": "VariableDeclaration",
                  "scope": 2190,
                  "src": "2199:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2161,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2199:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2162:56:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2164,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2228:0:1"
            },
            "scope": 2191,
            "src": "2136:261:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2861,
        "src": "1036:1363:1"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2192,
              "name": "KitBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2191,
              "src": "2425:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KitBase_$2191",
                "typeString": "contract KitBase"
              }
            },
            "id": 2193,
            "nodeType": "InheritanceSpecifier",
            "src": "2425:7:1"
          }
        ],
        "contractDependencies": [
          2035,
          2191,
          6724,
          9716,
          11850
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2860,
        "linearizedBaseContracts": [
          2860,
          2191,
          11850,
          9716
        ],
        "name": "PayrollKit",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2195,
            "name": "tokenFactory",
            "nodeType": "VariableDeclaration",
            "scope": 2860,
            "src": "2439:31:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
              "typeString": "contract MiniMeTokenFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 2194,
              "name": "MiniMeTokenFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6724,
              "src": "2439:18:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                "typeString": "contract MiniMeTokenFactory"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2198,
            "name": "FINANCE_PERIOD_DURATION",
            "nodeType": "VariableDeclaration",
            "scope": 2860,
            "src": "2477:59:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2196,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2477:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3331353537363030",
              "id": 2197,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2528:8:1",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_31557600_by_1",
                "typeString": "int_const 31557600"
              },
              "value": "31557600"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2201,
            "name": "RATE_EXPIRY_TIME",
            "nodeType": "VariableDeclaration",
            "scope": 2860,
            "src": "2542:48:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2199,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2542:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31303030",
              "id": 2200,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2586:4:1",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000_by_1",
                "typeString": "int_const 1000"
              },
              "value": "1000"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2207,
            "name": "MAX_UINT64",
            "nodeType": "VariableDeclaration",
            "scope": 2860,
            "src": "2596:48:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2202,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2596:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "id": 2205,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "nodeType": "UnaryOperation",
                  "operator": "-",
                  "prefix": true,
                  "src": "2641:2:1",
                  "subExpression": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 2204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2642:1:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_-1_by_1",
                    "typeString": "int_const -1"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_-1_by_1",
                    "typeString": "int_const -1"
                  }
                ],
                "id": 2203,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "2634:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_uint64_$",
                  "typeString": "type(uint64)"
                },
                "typeName": "uint64"
              },
              "id": 2206,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "2634:10:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2224,
              "nodeType": "Block",
              "src": "2707:56:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2218,
                      "name": "tokenFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2195,
                      "src": "2717:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                        "typeString": "contract MiniMeTokenFactory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 2220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "2732:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_MiniMeTokenFactory_$6724_$",
                          "typeString": "function () returns (contract MiniMeTokenFactory)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2219,
                          "name": "MiniMeTokenFactory",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6724,
                          "src": "2736:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                            "typeString": "contract MiniMeTokenFactory"
                          }
                        }
                      },
                      "id": 2221,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2732:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                        "typeString": "contract MiniMeTokenFactory"
                      }
                    },
                    "src": "2717:39:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                      "typeString": "contract MiniMeTokenFactory"
                    }
                  },
                  "id": 2223,
                  "nodeType": "ExpressionStatement",
                  "src": "2717:39:1"
                }
              ]
            },
            "documentation": null,
            "id": 2225,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2213,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2691:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2212,
                      "name": "DAOFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12439,
                      "src": "2680:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DAOFactory_$12439_$",
                        "typeString": "type(contract DAOFactory)"
                      }
                    },
                    "id": 2214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2680:13:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DAOFactory_$12439",
                      "typeString": "contract DAOFactory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 2215,
                    "name": "ens",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2209,
                    "src": "2695:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$13457",
                      "typeString": "contract ENS"
                    }
                  }
                ],
                "id": 2216,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2211,
                  "name": "KitBase",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2191,
                  "src": "2672:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_KitBase_$2191_$",
                    "typeString": "type(contract KitBase)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2672:27:1"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2209,
                  "name": "ens",
                  "nodeType": "VariableDeclaration",
                  "scope": 2225,
                  "src": "2663:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$13457",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2208,
                    "name": "ENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13457,
                    "src": "2663:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$13457",
                      "typeString": "contract ENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2662:9:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2217,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2707:0:1"
            },
            "scope": 2860,
            "src": "2651:112:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2392,
              "nodeType": "Block",
              "src": "2857:1394:1",
              "statements": [
                {
                  "assignments": [
                    2233
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2233,
                      "name": "root",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "2867:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2232,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2867:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2236,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2234,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15153,
                      "src": "2882:3:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 2235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "2882:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2867:25:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2237,
                      "name": "dao",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2228,
                      "src": "2903:3:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Kernel_$13092",
                        "typeString": "contract Kernel"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2240,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15298,
                          "src": "2920:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PayrollKit_$2860",
                            "typeString": "contract PayrollKit"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_PayrollKit_$2860",
                            "typeString": "contract PayrollKit"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2238,
                          "name": "fac",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2043,
                          "src": "2909:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DAOFactory_$12439",
                            "typeString": "contract DAOFactory"
                          }
                        },
                        "id": 2239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "newDAO",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12438,
                        "src": "2909:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_contract$_Kernel_$13092_$",
                          "typeString": "function (address) external returns (contract Kernel)"
                        }
                      },
                      "id": 2241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2909:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Kernel_$13092",
                        "typeString": "contract Kernel"
                      }
                    },
                    "src": "2903:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "id": 2243,
                  "nodeType": "ExpressionStatement",
                  "src": "2903:22:1"
                },
                {
                  "assignments": [
                    2245
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2245,
                      "name": "acl",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "2935:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ACL_$9152",
                        "typeString": "contract ACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2244,
                        "name": "ACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9152,
                        "src": "2935:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2251,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2247,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2228,
                            "src": "2949:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "acl",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12962,
                          "src": "2949:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IACL_$9673_$",
                            "typeString": "function () view external returns (contract IACL)"
                          }
                        },
                        "id": 2249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2949:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 2246,
                      "name": "ACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9152,
                      "src": "2945:3:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ACL_$9152_$",
                        "typeString": "type(contract ACL)"
                      }
                    },
                    "id": 2250,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2945:14:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2935:24:1"
                },
                {
                  "assignments": [
                    2253
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2253,
                      "name": "priceFeed",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3003:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_PPFMock_$2035",
                        "typeString": "contract PPFMock"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2252,
                        "name": "PPFMock",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2035,
                        "src": "3003:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PPFMock_$2035",
                          "typeString": "contract PPFMock"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2257,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2255,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3023:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_PPFMock_$2035_$",
                        "typeString": "function () returns (contract PPFMock)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2254,
                        "name": "PPFMock",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2035,
                        "src": "3027:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PPFMock_$2035",
                          "typeString": "contract PPFMock"
                        }
                      }
                    },
                    "id": 2256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3023:13:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PPFMock_$2035",
                      "typeString": "contract PPFMock"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3003:33:1"
                },
                {
                  "assignments": [
                    2259
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2259,
                      "name": "denominationToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3046:29:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2258,
                        "name": "MiniMeToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6683,
                        "src": "3046:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2264,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "55534420446f6c6c6172",
                        "id": 2261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3087:12:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6b52aa0d1b6be2149867505593105760bd4f909dd841e4604d02ec4a9811d41c",
                          "typeString": "literal_string \"USD Dollar\""
                        },
                        "value": "USD Dollar"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555344",
                        "id": 2262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3101:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e",
                          "typeString": "literal_string \"USD\""
                        },
                        "value": "USD"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_6b52aa0d1b6be2149867505593105760bd4f909dd841e4604d02ec4a9811d41c",
                          "typeString": "literal_string \"USD Dollar\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e",
                          "typeString": "literal_string \"USD\""
                        }
                      ],
                      "id": 2260,
                      "name": "newToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2706,
                      "src": "3078:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_MiniMeToken_$6683_$",
                        "typeString": "function (string memory,string memory) returns (contract MiniMeToken)"
                      }
                    },
                    "id": 2263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3078:29:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3046:61:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2268,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "3198:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2269,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "3204:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2270,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2228,
                            "src": "3209:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "APP_MANAGER_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12634,
                          "src": "3209:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3209:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2273,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "3233:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2265,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "3177:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "3177:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2274,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3177:61:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2275,
                  "nodeType": "ExpressionStatement",
                  "src": "3177:61:1"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2277,
                      "name": "vault",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3249:11:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Vault_$7857",
                        "typeString": "contract Vault"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2276,
                        "name": "Vault",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7857,
                        "src": "3249:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2278,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3249:11:1"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2280,
                      "name": "finance",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3270:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Finance_$5528",
                        "typeString": "contract Finance"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2279,
                        "name": "Finance",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5528,
                        "src": "3270:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2281,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3270:15:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 2282,
                          "name": "vault",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2277,
                          "src": "3296:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Vault_$7857",
                            "typeString": "contract Vault"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2283,
                          "name": "finance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2280,
                          "src": "3303:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Finance_$5528",
                            "typeString": "contract Finance"
                          }
                        }
                      ],
                      "id": 2284,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "3295:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_contract$_Vault_$7857_$_t_contract$_Finance_$5528_$",
                        "typeString": "tuple(contract Vault,contract Finance)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2286,
                          "name": "dao",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2228,
                          "src": "3330:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2287,
                          "name": "acl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2245,
                          "src": "3335:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ACL_$9152",
                            "typeString": "contract ACL"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2288,
                          "name": "root",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2233,
                          "src": "3340:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_contract$_ACL_$9152",
                            "typeString": "contract ACL"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2285,
                        "name": "installBaseApps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2480,
                        "src": "3314:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$returns$_t_contract$_Vault_$7857_$_t_contract$_Finance_$5528_$",
                          "typeString": "function (contract Kernel,contract ACL,address) returns (contract Vault,contract Finance)"
                        }
                      },
                      "id": 2289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3314:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_contract$_Vault_$7857_$_t_contract$_Finance_$5528_$",
                        "typeString": "tuple(contract Vault,contract Finance)"
                      }
                    },
                    "src": "3295:50:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2291,
                  "nodeType": "ExpressionStatement",
                  "src": "3295:50:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2301,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2292,
                      "name": "payroll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2230,
                      "src": "3355:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Payroll_$1984",
                        "typeString": "contract Payroll"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2294,
                          "name": "dao",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2228,
                          "src": "3380:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2295,
                          "name": "acl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2245,
                          "src": "3385:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ACL_$9152",
                            "typeString": "contract ACL"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2296,
                          "name": "root",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2233,
                          "src": "3390:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2297,
                          "name": "finance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2280,
                          "src": "3396:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Finance_$5528",
                            "typeString": "contract Finance"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2298,
                          "name": "denominationToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2259,
                          "src": "3405:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2299,
                          "name": "priceFeed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2253,
                          "src": "3424:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PPFMock_$2035",
                            "typeString": "contract PPFMock"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_contract$_ACL_$9152",
                            "typeString": "contract ACL"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_contract$_Finance_$5528",
                            "typeString": "contract Finance"
                          },
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          },
                          {
                            "typeIdentifier": "t_contract$_PPFMock_$2035",
                            "typeString": "contract PPFMock"
                          }
                        ],
                        "id": 2293,
                        "name": "installPayroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2576,
                        "src": "3365:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$_t_contract$_Finance_$5528_$_t_contract$_MiniMeToken_$6683_$_t_contract$_IFeed_$14313_$returns$_t_contract$_Payroll_$1984_$",
                          "typeString": "function (contract Kernel,contract ACL,address,contract Finance,contract MiniMeToken,contract IFeed) returns (contract Payroll)"
                        }
                      },
                      "id": 2300,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3365:69:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Payroll_$1984",
                        "typeString": "contract Payroll"
                      }
                    },
                    "src": "3355:79:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "id": 2302,
                  "nodeType": "ExpressionStatement",
                  "src": "3355:79:1"
                },
                {
                  "assignments": [
                    2304
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2304,
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3478:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2303,
                        "name": "MiniMeToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6683,
                        "src": "3478:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2313,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2306,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "3519:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2307,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "3524:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2308,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "3529:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2309,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2280,
                        "src": "3535:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6b656e2031",
                        "id": 2310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3544:9:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5eacce6c95f6838cd10e92f48b0d82f4df03d4ad1e947ebc0e9a235c5ef43194",
                          "typeString": "literal_string \"Token 1\""
                        },
                        "value": "Token 1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "544b31",
                        "id": 2311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3555:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5b8aad1af7a7755755e7bb029b1842c4b2be55785a56f5cdd5c01bcfa66dcc99",
                          "typeString": "literal_string \"TK1\""
                        },
                        "value": "TK1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5eacce6c95f6838cd10e92f48b0d82f4df03d4ad1e947ebc0e9a235c5ef43194",
                          "typeString": "literal_string \"Token 1\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5b8aad1af7a7755755e7bb029b1842c4b2be55785a56f5cdd5c01bcfa66dcc99",
                          "typeString": "literal_string \"TK1\""
                        }
                      ],
                      "id": 2305,
                      "name": "installManagedToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2682,
                      "src": "3499:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$_t_contract$_Finance_$5528_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_MiniMeToken_$6683_$",
                        "typeString": "function (contract Kernel,contract ACL,address,contract Finance,string memory,string memory) returns (contract MiniMeToken)"
                      }
                    },
                    "id": 2312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3499:62:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3478:83:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2317,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2304,
                        "src": "3595:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3603:4:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2314,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "3571:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2316,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setAllowedToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 382,
                      "src": "3571:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,bool) external"
                      }
                    },
                    "id": 2319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3571:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2320,
                  "nodeType": "ExpressionStatement",
                  "src": "3571:37:1"
                },
                {
                  "assignments": [
                    2322
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2322,
                      "name": "token2",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3619:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2321,
                        "name": "MiniMeToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6683,
                        "src": "3619:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2331,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2324,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "3660:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2325,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "3665:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2326,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "3670:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2327,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2280,
                        "src": "3676:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6b656e2032",
                        "id": 2328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3685:9:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c751b5b68c0ab3f6eca892f0f099d5a090c64dfe42ad9cf60707ee1cc8d081d8",
                          "typeString": "literal_string \"Token 2\""
                        },
                        "value": "Token 2"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "544b32",
                        "id": 2329,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3696:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4920950a4ac3f0a942c5d360e7c2a1d6ac16f7927b94c5d1ace156c93112a152",
                          "typeString": "literal_string \"TK2\""
                        },
                        "value": "TK2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c751b5b68c0ab3f6eca892f0f099d5a090c64dfe42ad9cf60707ee1cc8d081d8",
                          "typeString": "literal_string \"Token 2\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4920950a4ac3f0a942c5d360e7c2a1d6ac16f7927b94c5d1ace156c93112a152",
                          "typeString": "literal_string \"TK2\""
                        }
                      ],
                      "id": 2323,
                      "name": "installManagedToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2682,
                      "src": "3640:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$_t_contract$_Finance_$5528_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_MiniMeToken_$6683_$",
                        "typeString": "function (contract Kernel,contract ACL,address,contract Finance,string memory,string memory) returns (contract MiniMeToken)"
                      }
                    },
                    "id": 2330,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3640:62:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3619:83:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2335,
                        "name": "token2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2322,
                        "src": "3736:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3744:4:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2332,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "3712:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setAllowedToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 382,
                      "src": "3712:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,bool) external"
                      }
                    },
                    "id": 2337,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3712:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2338,
                  "nodeType": "ExpressionStatement",
                  "src": "3712:37:1"
                },
                {
                  "assignments": [
                    2340
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2340,
                      "name": "token3",
                      "nodeType": "VariableDeclaration",
                      "scope": 2393,
                      "src": "3760:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2339,
                        "name": "MiniMeToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6683,
                        "src": "3760:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2349,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2342,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "3801:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2343,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "3806:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2344,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "3811:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2345,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2280,
                        "src": "3817:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6b656e2033",
                        "id": 2346,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3826:9:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_57491824fcb3f02d12c71479511f447bd2617e2fb2c579357821dbff760f2b99",
                          "typeString": "literal_string \"Token 3\""
                        },
                        "value": "Token 3"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "544b33",
                        "id": 2347,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3837:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ff513019c6e0a94954db08bafee0c1d15ae9bbc88b847489251a31df275f0089",
                          "typeString": "literal_string \"TK3\""
                        },
                        "value": "TK3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_57491824fcb3f02d12c71479511f447bd2617e2fb2c579357821dbff760f2b99",
                          "typeString": "literal_string \"Token 3\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ff513019c6e0a94954db08bafee0c1d15ae9bbc88b847489251a31df275f0089",
                          "typeString": "literal_string \"TK3\""
                        }
                      ],
                      "id": 2341,
                      "name": "installManagedToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2682,
                      "src": "3781:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$_t_contract$_Finance_$5528_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_MiniMeToken_$6683_$",
                        "typeString": "function (contract Kernel,contract ACL,address,contract Finance,string memory,string memory) returns (contract MiniMeToken)"
                      }
                    },
                    "id": 2348,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3781:62:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3760:83:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2353,
                        "name": "token3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2340,
                        "src": "3877:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3885:4:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2350,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "3853:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2352,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setAllowedToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 382,
                      "src": "3853:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,bool) external"
                      }
                    },
                    "id": 2355,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3853:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2356,
                  "nodeType": "ExpressionStatement",
                  "src": "3853:37:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2358,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "3950:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2359,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "3959:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2360,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2304,
                        "src": "3965:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2361,
                        "name": "token2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2322,
                        "src": "3973:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      ],
                      "id": 2357,
                      "name": "addEmployees",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2859,
                      "src": "3937:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Payroll_$1984_$_t_address_$_t_contract$_MiniMeToken_$6683_$_t_contract$_MiniMeToken_$6683_$returns$__$",
                        "typeString": "function (contract Payroll,address,contract MiniMeToken,contract MiniMeToken)"
                      }
                    },
                    "id": 2362,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3937:43:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2363,
                  "nodeType": "ExpressionStatement",
                  "src": "3937:43:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2365,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "4033:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2366,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "4038:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2367,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "4043:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        },
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2364,
                      "name": "cleanupDAOPermissions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2154,
                      "src": "4011:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Kernel_$13092_$_t_contract$_ACL_$9152_$_t_address_$returns$__$",
                        "typeString": "function (contract Kernel,contract ACL,address)"
                      }
                    },
                    "id": 2368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4011:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2369,
                  "nodeType": "ExpressionStatement",
                  "src": "4011:37:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2371,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "4076:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2372,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "4081:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2373,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "4087:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2374,
                            "name": "payroll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2230,
                            "src": "4096:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Payroll_$1984",
                              "typeString": "contract Payroll"
                            }
                          },
                          "id": 2375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "MANAGE_ALLOWED_TOKENS_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 41,
                          "src": "4096:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4096:36:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2370,
                      "name": "cleanupPermission",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2190,
                      "src": "4058:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ACL_$9152_$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract ACL,address,address,bytes32)"
                      }
                    },
                    "id": 2377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4058:75:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2378,
                  "nodeType": "ExpressionStatement",
                  "src": "4058:75:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2380,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "4161:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2381,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2233,
                        "src": "4166:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2382,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "4172:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2383,
                            "name": "payroll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2230,
                            "src": "4181:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Payroll_$1984",
                              "typeString": "contract Payroll"
                            }
                          },
                          "id": 2384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ADD_EMPLOYEE_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26,
                          "src": "4181:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4181:27:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2379,
                      "name": "cleanupPermission",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2190,
                      "src": "4143:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ACL_$9152_$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract ACL,address,address,bytes32)"
                      }
                    },
                    "id": 2386,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4143:66:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2387,
                  "nodeType": "ExpressionStatement",
                  "src": "4143:66:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2389,
                        "name": "dao",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2228,
                        "src": "4240:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      ],
                      "id": 2388,
                      "name": "DeployInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2047,
                      "src": "4225:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 2390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4225:19:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2391,
                  "nodeType": "EmitStatement",
                  "src": "4220:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 2393,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2226,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2789:2:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2231,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2228,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2393,
                  "src": "2824:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2227,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "2824:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2230,
                  "name": "payroll",
                  "nodeType": "VariableDeclaration",
                  "scope": 2393,
                  "src": "2836:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Payroll_$1984",
                    "typeString": "contract Payroll"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2229,
                    "name": "Payroll",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1984,
                    "src": "2836:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2823:29:1"
            },
            "scope": 2860,
            "src": "2769:1482:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2479,
              "nodeType": "Block",
              "src": "4351:609:1",
              "statements": [
                {
                  "assignments": [
                    2407
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2407,
                      "name": "vaultAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2480,
                      "src": "4361:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2406,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4361:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2411,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "7661756c74",
                        "id": 2409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4394:7:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_23c14fceac7676b670aa56866076586ea1ce15ddcf19208ec6346cf748dffbee",
                          "typeString": "literal_string \"vault\""
                        },
                        "value": "vault"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_23c14fceac7676b670aa56866076586ea1ce15ddcf19208ec6346cf748dffbee",
                          "typeString": "literal_string \"vault\""
                        }
                      ],
                      "id": 2408,
                      "name": "apmNamehash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9715,
                      "src": "4382:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4382:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4361:41:1"
                },
                {
                  "assignments": [
                    2413
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2413,
                      "name": "financeAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2480,
                      "src": "4412:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2412,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4412:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2417,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66696e616e6365",
                        "id": 2415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4447:9:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2af4c2fb0d9965fa818b9c58b2744b328ab67b082ec92907629457399dacdb35",
                          "typeString": "literal_string \"finance\""
                        },
                        "value": "finance"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_2af4c2fb0d9965fa818b9c58b2744b328ab67b082ec92907629457399dacdb35",
                          "typeString": "literal_string \"finance\""
                        }
                      ],
                      "id": 2414,
                      "name": "apmNamehash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9715,
                      "src": "4435:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4435:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4412:45:1"
                },
                {
                  "assignments": [
                    2419
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2419,
                      "name": "vault",
                      "nodeType": "VariableDeclaration",
                      "scope": 2480,
                      "src": "4468:11:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Vault_$7857",
                        "typeString": "contract Vault"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2418,
                        "name": "Vault",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7857,
                        "src": "4468:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2429,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2423,
                            "name": "vaultAppId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2407,
                            "src": "4507:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2425,
                                "name": "vaultAppId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2407,
                                "src": "4540:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 2424,
                              "name": "latestVersionAppBase",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2126,
                              "src": "4519:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 2426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4519:32:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2421,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2395,
                            "src": "4488:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "newAppInstance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12726,
                          "src": "4488:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_contract$_ERCProxy_$14225_$",
                            "typeString": "function (bytes32,address) external returns (contract ERCProxy)"
                          }
                        },
                        "id": 2427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4488:64:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      ],
                      "id": 2420,
                      "name": "Vault",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7857,
                      "src": "4482:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Vault_$7857_$",
                        "typeString": "type(contract Vault)"
                      }
                    },
                    "id": 2428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4482:71:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Vault_$7857",
                      "typeString": "contract Vault"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4468:85:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2431,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "4581:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2432,
                        "name": "vaultAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2407,
                        "src": "4588:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2430,
                      "name": "InstalledApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2053,
                      "src": "4568:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 2433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4568:31:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2434,
                  "nodeType": "EmitStatement",
                  "src": "4563:36:1"
                },
                {
                  "assignments": [
                    2436
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2436,
                      "name": "finance",
                      "nodeType": "VariableDeclaration",
                      "scope": 2480,
                      "src": "4610:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Finance_$5528",
                        "typeString": "contract Finance"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2435,
                        "name": "Finance",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5528,
                        "src": "4610:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2446,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2440,
                            "name": "financeAppId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2413,
                            "src": "4655:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2442,
                                "name": "financeAppId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2413,
                                "src": "4690:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 2441,
                              "name": "latestVersionAppBase",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2126,
                              "src": "4669:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 2443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4669:34:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2438,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2395,
                            "src": "4636:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "newAppInstance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12726,
                          "src": "4636:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_contract$_ERCProxy_$14225_$",
                            "typeString": "function (bytes32,address) external returns (contract ERCProxy)"
                          }
                        },
                        "id": 2444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4636:68:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      ],
                      "id": 2437,
                      "name": "Finance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5528,
                      "src": "4628:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Finance_$5528_$",
                        "typeString": "type(contract Finance)"
                      }
                    },
                    "id": 2445,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4628:77:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Finance_$5528",
                      "typeString": "contract Finance"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4610:95:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2448,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2436,
                        "src": "4733:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2449,
                        "name": "financeAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2413,
                        "src": "4742:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2447,
                      "name": "InstalledApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2053,
                      "src": "4720:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 2450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4720:35:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2451,
                  "nodeType": "EmitStatement",
                  "src": "4715:40:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2452,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "4766:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 2454,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7694,
                      "src": "4766:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 2455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4766:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2456,
                  "nodeType": "ExpressionStatement",
                  "src": "4766:18:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2460,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "4813:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2461,
                        "name": "FINANCE_PERIOD_DURATION",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2198,
                        "src": "4820:23:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2457,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2436,
                        "src": "4794:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      "id": 2459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3915,
                      "src": "4794:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Vault_$7857_$_t_uint64_$returns$__$",
                        "typeString": "function (contract Vault,uint64) external"
                      }
                    },
                    "id": 2462,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4794:50:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2463,
                  "nodeType": "ExpressionStatement",
                  "src": "4794:50:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2467,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2436,
                        "src": "4875:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2468,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "4884:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2469,
                            "name": "vault",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2419,
                            "src": "4891:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vault_$7857",
                              "typeString": "contract Vault"
                            }
                          },
                          "id": 2470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "TRANSFER_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7620,
                          "src": "4891:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4891:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2472,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2399,
                        "src": "4914:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2464,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2397,
                        "src": "4854:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2466,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "4854:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4854:65:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2474,
                  "nodeType": "ExpressionStatement",
                  "src": "4854:65:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2475,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "4938:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$7857",
                          "typeString": "contract Vault"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2476,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2436,
                        "src": "4945:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      }
                    ],
                    "id": 2477,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4937:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_contract$_Vault_$7857_$_t_contract$_Finance_$5528_$",
                      "typeString": "tuple(contract Vault,contract Finance)"
                    }
                  },
                  "functionReturnParameters": 2405,
                  "id": 2478,
                  "nodeType": "Return",
                  "src": "4930:23:1"
                }
              ]
            },
            "documentation": null,
            "id": 2480,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "installBaseApps",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2395,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2480,
                  "src": "4282:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2394,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "4282:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2397,
                  "name": "acl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2480,
                  "src": "4294:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ACL_$9152",
                    "typeString": "contract ACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2396,
                    "name": "ACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9152,
                    "src": "4294:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2399,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2480,
                  "src": "4303:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2398,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4303:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4281:35:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2402,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2480,
                  "src": "4335:5:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Vault_$7857",
                    "typeString": "contract Vault"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2401,
                    "name": "Vault",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7857,
                    "src": "4335:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Vault_$7857",
                      "typeString": "contract Vault"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2404,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2480,
                  "src": "4342:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Finance_$5528",
                    "typeString": "contract Finance"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2403,
                    "name": "Finance",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5528,
                    "src": "4342:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Finance_$5528",
                      "typeString": "contract Finance"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4334:16:1"
            },
            "scope": 2860,
            "src": "4257:703:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2575,
              "nodeType": "Block",
              "src": "5191:803:1",
              "statements": [
                {
                  "assignments": [
                    2498
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2498,
                      "name": "payrollAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2576,
                      "src": "5201:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2497,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5201:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2502,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "706179726f6c6c",
                        "id": 2500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5236:9:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5bcd5b7fba7251d646ed9eb72ccf3fcd7378e05364be626802394601d6d05a89",
                          "typeString": "literal_string \"payroll\""
                        },
                        "value": "payroll"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_5bcd5b7fba7251d646ed9eb72ccf3fcd7378e05364be626802394601d6d05a89",
                          "typeString": "literal_string \"payroll\""
                        }
                      ],
                      "id": 2499,
                      "name": "apmNamehash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9715,
                      "src": "5224:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5224:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5201:45:1"
                },
                {
                  "assignments": [
                    2504
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2504,
                      "name": "payroll",
                      "nodeType": "VariableDeclaration",
                      "scope": 2576,
                      "src": "5257:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Payroll_$1984",
                        "typeString": "contract Payroll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2503,
                        "name": "Payroll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1984,
                        "src": "5257:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2514,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2508,
                            "name": "payrollAppId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2498,
                            "src": "5302:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2510,
                                "name": "payrollAppId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2498,
                                "src": "5337:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 2509,
                              "name": "latestVersionAppBase",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2126,
                              "src": "5316:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 2511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5316:34:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2506,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2482,
                            "src": "5283:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "newAppInstance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12726,
                          "src": "5283:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_contract$_ERCProxy_$14225_$",
                            "typeString": "function (bytes32,address) external returns (contract ERCProxy)"
                          }
                        },
                        "id": 2512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5283:68:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      ],
                      "id": 2505,
                      "name": "Payroll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1984,
                      "src": "5275:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Payroll_$1984_$",
                        "typeString": "type(contract Payroll)"
                      }
                    },
                    "id": 2513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5275:77:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5257:95:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2516,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5380:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2517,
                        "name": "payrollAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2498,
                        "src": "5389:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2515,
                      "name": "InstalledApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2053,
                      "src": "5367:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 2518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5367:35:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2519,
                  "nodeType": "EmitStatement",
                  "src": "5362:40:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2523,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2488,
                        "src": "5432:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2524,
                        "name": "denominationToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2490,
                        "src": "5441:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2525,
                        "name": "priceFeed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2492,
                        "src": "5460:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IFeed_$14313",
                          "typeString": "contract IFeed"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2526,
                        "name": "RATE_EXPIRY_TIME",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2201,
                        "src": "5471:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_contract$_IFeed_$14313",
                          "typeString": "contract IFeed"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2520,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5413:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 348,
                      "src": "5413:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Finance_$5528_$_t_address_$_t_contract$_IFeed_$14313_$_t_uint64_$returns$__$",
                        "typeString": "function (contract Finance,address,contract IFeed,uint64) external"
                      }
                    },
                    "id": 2527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5413:75:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2528,
                  "nodeType": "ExpressionStatement",
                  "src": "5413:75:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2532,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5519:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2533,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2488,
                        "src": "5528:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2534,
                            "name": "finance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2488,
                            "src": "5537:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Finance_$5528",
                              "typeString": "contract Finance"
                            }
                          },
                          "id": 2535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "CREATE_PAYMENTS_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3521,
                          "src": "5537:28:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2536,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5537:30:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2537,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2486,
                        "src": "5569:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2529,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2484,
                        "src": "5498:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "5498:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5498:76:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2539,
                  "nodeType": "ExpressionStatement",
                  "src": "5498:76:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2543,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2486,
                        "src": "5605:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2544,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5611:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2545,
                            "name": "payroll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "5620:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Payroll_$1984",
                              "typeString": "contract Payroll"
                            }
                          },
                          "id": 2546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "TERMINATE_EMPLOYEE_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 29,
                          "src": "5620:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5620:33:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2548,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2486,
                        "src": "5655:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2540,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2484,
                        "src": "5584:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2542,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "5584:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5584:76:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2550,
                  "nodeType": "ExpressionStatement",
                  "src": "5584:76:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2554,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "5756:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2555,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5762:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2556,
                            "name": "payroll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "5771:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Payroll_$1984",
                              "typeString": "contract Payroll"
                            }
                          },
                          "id": 2557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "MANAGE_ALLOWED_TOKENS_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 41,
                          "src": "5771:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5771:36:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2559,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "5809:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2551,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2484,
                        "src": "5735:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2553,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "5735:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5735:79:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2561,
                  "nodeType": "ExpressionStatement",
                  "src": "5735:79:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2565,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "5913:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2566,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2504,
                        "src": "5919:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2567,
                            "name": "payroll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "5928:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Payroll_$1984",
                              "typeString": "contract Payroll"
                            }
                          },
                          "id": 2568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ADD_EMPLOYEE_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26,
                          "src": "5928:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5928:27:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2570,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "5957:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2562,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2484,
                        "src": "5892:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "5892:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5892:70:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2572,
                  "nodeType": "ExpressionStatement",
                  "src": "5892:70:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2573,
                    "name": "payroll",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2504,
                    "src": "5980:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "functionReturnParameters": 2496,
                  "id": 2574,
                  "nodeType": "Return",
                  "src": "5973:14:1"
                }
              ]
            },
            "documentation": null,
            "id": 2576,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "installPayroll",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2493,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2482,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "4999:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2481,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "4999:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2484,
                  "name": "acl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5019:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ACL_$9152",
                    "typeString": "contract ACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2483,
                    "name": "ACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9152,
                    "src": "5019:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2486,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5036:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2485,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5036:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2488,
                  "name": "finance",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5058:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Finance_$5528",
                    "typeString": "contract Finance"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2487,
                    "name": "Finance",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5528,
                    "src": "5058:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Finance_$5528",
                      "typeString": "contract Finance"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2490,
                  "name": "denominationToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5083:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2489,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "5083:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2492,
                  "name": "priceFeed",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5122:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IFeed_$14313",
                    "typeString": "contract IFeed"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2491,
                    "name": "IFeed",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14313,
                    "src": "5122:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IFeed_$14313",
                      "typeString": "contract IFeed"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4989:154:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2496,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2495,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2576,
                  "src": "5178:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Payroll_$1984",
                    "typeString": "contract Payroll"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2494,
                    "name": "Payroll",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1984,
                    "src": "5178:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5177:9:1"
            },
            "scope": 2860,
            "src": "4966:1028:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2681,
              "nodeType": "Block",
              "src": "6214:889:1",
              "statements": [
                {
                  "assignments": [
                    2594
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2594,
                      "name": "tokenManagerAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2682,
                      "src": "6224:25:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2593,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6224:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2598,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "746f6b656e2d6d616e61676572",
                        "id": 2596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6264:15:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_de5fa9c0ef6d18cdb8ef4461bfb45c94dc915629a2a1f311fb33838aff95436f",
                          "typeString": "literal_string \"token-manager\""
                        },
                        "value": "token-manager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_de5fa9c0ef6d18cdb8ef4461bfb45c94dc915629a2a1f311fb33838aff95436f",
                          "typeString": "literal_string \"token-manager\""
                        }
                      ],
                      "id": 2595,
                      "name": "apmNamehash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9715,
                      "src": "6252:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6252:28:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6224:56:1"
                },
                {
                  "assignments": [
                    2600
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2600,
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2682,
                      "src": "6291:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2599,
                        "name": "MiniMeToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6683,
                        "src": "6291:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2605,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2602,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2586,
                        "src": "6320:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2603,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2588,
                        "src": "6326:6:1",
                        "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": 2601,
                      "name": "newToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2706,
                      "src": "6311:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_MiniMeToken_$6683_$",
                        "typeString": "function (string memory,string memory) returns (contract MiniMeToken)"
                      }
                    },
                    "id": 2604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6311:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6291:42:1"
                },
                {
                  "assignments": [
                    2607
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2607,
                      "name": "tokenManager",
                      "nodeType": "VariableDeclaration",
                      "scope": 2682,
                      "src": "6343:25:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TokenManager_$7603",
                        "typeString": "contract TokenManager"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2606,
                        "name": "TokenManager",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7603,
                        "src": "6343:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2617,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2611,
                            "name": "tokenManagerAppId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2594,
                            "src": "6403:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2613,
                                "name": "tokenManagerAppId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2594,
                                "src": "6443:17:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 2612,
                              "name": "latestVersionAppBase",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2126,
                              "src": "6422:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 2614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6422:39:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2609,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2578,
                            "src": "6384:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 2610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "newAppInstance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12726,
                          "src": "6384:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_contract$_ERCProxy_$14225_$",
                            "typeString": "function (bytes32,address) external returns (contract ERCProxy)"
                          }
                        },
                        "id": 2615,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6384:78:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERCProxy_$14225",
                          "typeString": "contract ERCProxy"
                        }
                      ],
                      "id": 2608,
                      "name": "TokenManager",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7603,
                      "src": "6371:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_TokenManager_$7603_$",
                        "typeString": "type(contract TokenManager)"
                      }
                    },
                    "id": 2616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6371:92:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TokenManager_$7603",
                      "typeString": "contract TokenManager"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6343:120:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2619,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "6491:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2620,
                        "name": "tokenManagerAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2594,
                        "src": "6505:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2618,
                      "name": "InstalledApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2053,
                      "src": "6478:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 2621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6478:45:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2622,
                  "nodeType": "EmitStatement",
                  "src": "6473:50:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2626,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "6557:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2623,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2600,
                        "src": "6534:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 2625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "changeController",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5654,
                      "src": "6534:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 2627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6534:36:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2628,
                  "nodeType": "ExpressionStatement",
                  "src": "6534:36:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2632,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2600,
                        "src": "6604:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2633,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6611:4:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2634,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6617:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2629,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "6580:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      "id": 2631,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6926,
                      "src": "6580:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_MiniMeToken_$6683_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (contract MiniMeToken,bool,uint256) external"
                      }
                    },
                    "id": 2635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6580:39:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2636,
                  "nodeType": "ExpressionStatement",
                  "src": "6580:39:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2640,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "6705:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2641,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "6711:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2642,
                            "name": "tokenManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2607,
                            "src": "6725:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          },
                          "id": 2643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "MINT_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6750,
                          "src": "6725:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6725:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2645,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "6751:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2637,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2580,
                        "src": "6684:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 2639,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8078,
                      "src": "6684:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 2646,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6684:72:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2647,
                  "nodeType": "ExpressionStatement",
                  "src": "6684:72:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2651,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "6838:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2652,
                        "name": "MAX_UINT64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2207,
                        "src": "6844:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2648,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "6820:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      "id": 2650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6954,
                      "src": "6820:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 2653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6820:35:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2654,
                  "nodeType": "ExpressionStatement",
                  "src": "6820:35:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2658,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2584,
                        "src": "6879:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2659,
                        "name": "MAX_UINT64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2207,
                        "src": "6888:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2655,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2600,
                        "src": "6865:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 2657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6022,
                      "src": "6865:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 2660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6865:34:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2661,
                  "nodeType": "ExpressionStatement",
                  "src": "6865:34:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2665,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2600,
                        "src": "6925:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2666,
                        "name": "MAX_UINT64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2207,
                        "src": "6932:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e697469616c206465706f736974",
                        "id": 2667,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6944:17:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_76f32e1a7ea729e419bd521d311325a6f5b2b24fc00ac96517473733fb8949dc",
                          "typeString": "literal_string \"Initial deposit\""
                        },
                        "value": "Initial deposit"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_76f32e1a7ea729e419bd521d311325a6f5b2b24fc00ac96517473733fb8949dc",
                          "typeString": "literal_string \"Initial deposit\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2662,
                        "name": "finance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2584,
                        "src": "6909:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Finance_$5528",
                          "typeString": "contract Finance"
                        }
                      },
                      "id": 2664,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3958,
                      "src": "6909:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,string memory) payable external"
                      }
                    },
                    "id": 2668,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6909:53:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2669,
                  "nodeType": "ExpressionStatement",
                  "src": "6909:53:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2671,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2580,
                        "src": "7023:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2672,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2582,
                        "src": "7028:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2673,
                        "name": "tokenManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2607,
                        "src": "7034:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2674,
                            "name": "tokenManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2607,
                            "src": "7048:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          },
                          "id": 2675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "MINT_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6750,
                          "src": "7048:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 2676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7048:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ACL_$9152",
                          "typeString": "contract ACL"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_TokenManager_$7603",
                          "typeString": "contract TokenManager"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2670,
                      "name": "cleanupPermission",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2190,
                      "src": "7005:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ACL_$9152_$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract ACL,address,address,bytes32)"
                      }
                    },
                    "id": 2677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7005:68:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2678,
                  "nodeType": "ExpressionStatement",
                  "src": "7005:68:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2679,
                    "name": "token",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2600,
                    "src": "7091:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "functionReturnParameters": 2592,
                  "id": 2680,
                  "nodeType": "Return",
                  "src": "7084:12:1"
                }
              ]
            },
            "documentation": null,
            "id": 2682,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "installManagedToken",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2589,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2578,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6038:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2577,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "6038:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2580,
                  "name": "acl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6058:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ACL_$9152",
                    "typeString": "contract ACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2579,
                    "name": "ACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9152,
                    "src": "6058:3:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$9152",
                      "typeString": "contract ACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2582,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6075:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2581,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6075:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2584,
                  "name": "finance",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6097:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Finance_$5528",
                    "typeString": "contract Finance"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2583,
                    "name": "Finance",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5528,
                    "src": "6097:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Finance_$5528",
                      "typeString": "contract Finance"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2586,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6122:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2585,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6122:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2588,
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6143:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2587,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6143:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6028:134:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2591,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "6197:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2590,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "6197:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6196:13:1"
            },
            "scope": 2860,
            "src": "6000:1103:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2705,
              "nodeType": "Block",
              "src": "7192:97:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2691,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2689,
                      "src": "7202:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7252:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2694,
                            "name": "MiniMeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6683,
                            "src": "7240:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MiniMeToken_$6683_$",
                              "typeString": "type(contract MiniMeToken)"
                            }
                          },
                          "id": 2696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7240:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7256:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "id": 2698,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2684,
                          "src": "7259:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "3138",
                          "id": 2699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7265:2:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        {
                          "argumentTypes": null,
                          "id": 2700,
                          "name": "symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2686,
                          "src": "7269:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7277:4:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2692,
                          "name": "tokenFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2195,
                          "src": "7210:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeTokenFactory_$6724",
                            "typeString": "contract MiniMeTokenFactory"
                          }
                        },
                        "id": 2693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createCloneToken",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6723,
                        "src": "7210:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_contract$_MiniMeToken_$6683_$_t_uint256_$_t_string_memory_ptr_$_t_uint8_$_t_string_memory_ptr_$_t_bool_$returns$_t_contract$_MiniMeToken_$6683_$",
                          "typeString": "function (contract MiniMeToken,uint256,string memory,uint8,string memory,bool) external returns (contract MiniMeToken)"
                        }
                      },
                      "id": 2702,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7210:72:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "src": "7202:80:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "id": 2704,
                  "nodeType": "ExpressionStatement",
                  "src": "7202:80:1"
                }
              ]
            },
            "documentation": null,
            "id": 2706,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newToken",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2684,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "7127:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2683,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7127:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2686,
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "7140:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2685,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7140:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7126:28:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2690,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2689,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "7173:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2688,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "7173:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7172:19:1"
            },
            "scope": 2860,
            "src": "7109:180:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2858,
              "nodeType": "Block",
              "src": "7397:1300:1",
              "statements": [
                {
                  "assignments": [
                    2718
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2718,
                      "name": "account2",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7407:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2717,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7407:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2720,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "307838343031456235666633346363393433663039364133324546336435313133464562453844344562",
                    "id": 2719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7426:42:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "value": "0x8401Eb5ff34cc943f096A32EF3d5113FEbE8D4Eb"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7407:61:1"
                },
                {
                  "assignments": [
                    2722
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2722,
                      "name": "account3",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7478:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2721,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7478:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2724,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "307833303634363934353732363643424265376330353035653841616433353836323232333565373638",
                    "id": 2723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7497:42:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "value": "0x306469457266CBBe7c0505e8Aad358622235e768"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7478:61:1"
                },
                {
                  "assignments": [
                    2726
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2726,
                      "name": "account4",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7549:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2725,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7549:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2728,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "307864383733463644433638653330353765344237646137346336623330346430654630423438344337",
                    "id": 2727,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7568:42:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "value": "0xd873F6DC68e3057e4B7da74c6b304d0eF0B484C7"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7549:61:1"
                },
                {
                  "assignments": [
                    2730
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2730,
                      "name": "salary1",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7621:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2729,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7621:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2732,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "32353335303437303235313232333136",
                    "id": 2731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7639:16:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2535047025122316_by_1",
                      "typeString": "int_const 2535047025122316"
                    },
                    "value": "2535047025122316"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7621:34:1"
                },
                {
                  "assignments": [
                    2734
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2734,
                      "name": "salary2",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7674:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2733,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7674:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2736,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "32383531393237393033323632363035",
                    "id": 2735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7692:16:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2851927903262605_by_1",
                      "typeString": "int_const 2851927903262605"
                    },
                    "value": "2851927903262605"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7674:34:1"
                },
                {
                  "assignments": [
                    2738
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2738,
                      "name": "salary3",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7727:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2737,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7727:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2740,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "33313638383038373831343032383935",
                    "id": 2739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7745:16:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3168808781402895_by_1",
                      "typeString": "int_const 3168808781402895"
                    },
                    "value": "3168808781402895"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7727:34:1"
                },
                {
                  "assignments": [
                    2742
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2742,
                      "name": "salary4",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "7781:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2741,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7781:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2744,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "32323138313636313436393832303236",
                    "id": 2743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7799:16:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2218166146982026_by_1",
                      "typeString": "int_const 2218166146982026"
                    },
                    "value": "2218166146982026"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7781:34:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2748,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "7960:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2749,
                        "name": "salary1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2730,
                        "src": "7966:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2751,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15155,
                              "src": "7982:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3836343030",
                              "id": 2752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7988:5:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              },
                              "value": "86400"
                            },
                            "src": "7982:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7975:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": "uint64"
                        },
                        "id": 2754,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7975:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43454f",
                        "id": 2755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7996:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dc0d7a095c4e917ecbeb7deda7c942ff9744013d419e37549215a413915e421d",
                          "typeString": "literal_string \"CEO\""
                        },
                        "value": "CEO"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_PayrollKit_$2860",
                          "typeString": "contract PayrollKit"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dc0d7a095c4e917ecbeb7deda7c942ff9744013d419e37549215a413915e421d",
                          "typeString": "literal_string \"CEO\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2745,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "7940:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2747,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addEmployee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 449,
                      "src": "7940:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint64_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint64,string memory) external"
                      }
                    },
                    "id": 2756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7940:62:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2757,
                  "nodeType": "ExpressionStatement",
                  "src": "7940:62:1"
                },
                {
                  "assignments": [
                    2761
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2761,
                      "name": "allowedTokens",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "8013:30:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2759,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8013:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2760,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8013:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2767,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2765,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8060:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 2764,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "8046:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2762,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8050:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2763,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8050:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8046:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8013:49:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2768,
                        "name": "allowedTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2761,
                        "src": "8072:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2770,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8086:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8072:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2772,
                          "name": "token1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2712,
                          "src": "8099:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        ],
                        "id": 2771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8091:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2773,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8091:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "8072:34:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2775,
                  "nodeType": "ExpressionStatement",
                  "src": "8072:34:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2776,
                        "name": "allowedTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2761,
                        "src": "8116:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2778,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8130:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8116:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2780,
                          "name": "token2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2714,
                          "src": "8143:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        ],
                        "id": 2779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8135:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2781,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8135:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "8116:34:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2783,
                  "nodeType": "ExpressionStatement",
                  "src": "8116:34:1"
                },
                {
                  "assignments": [
                    2787
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2787,
                      "name": "distribution",
                      "nodeType": "VariableDeclaration",
                      "scope": 2859,
                      "src": "8161:29:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2785,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8161:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2786,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8161:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2793,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2791,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8207:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 2790,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "8193:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2788,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8197:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2789,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8197:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 2792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8193:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8161:48:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2794,
                        "name": "distribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2787,
                        "src": "8219:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2796,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8232:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8219:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "3435",
                      "id": 2797,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8237:2:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_45_by_1",
                        "typeString": "int_const 45"
                      },
                      "value": "45"
                    },
                    "src": "8219:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2799,
                  "nodeType": "ExpressionStatement",
                  "src": "8219:20:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2800,
                        "name": "distribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2787,
                        "src": "8249:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2802,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8262:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8249:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "3535",
                      "id": 2803,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8267:2:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_55_by_1",
                        "typeString": "int_const 55"
                      },
                      "value": "55"
                    },
                    "src": "8249:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2805,
                  "nodeType": "ExpressionStatement",
                  "src": "8249:20:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2809,
                        "name": "allowedTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2761,
                        "src": "8308:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2810,
                        "name": "distribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2787,
                        "src": "8323:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2806,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "8280:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "determineAllocation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 737,
                      "src": "8280:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (address[] memory,uint256[] memory) external"
                      }
                    },
                    "id": 2811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8280:56:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2812,
                  "nodeType": "ExpressionStatement",
                  "src": "8280:56:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2816,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2710,
                        "src": "8378:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2813,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "8346:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2815,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "changeAddressByEmployee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 618,
                      "src": "8346:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 2817,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8346:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2818,
                  "nodeType": "ExpressionStatement",
                  "src": "8346:37:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2822,
                        "name": "account2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2718,
                        "src": "8466:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2823,
                        "name": "salary2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2734,
                        "src": "8476:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2825,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15155,
                              "src": "8492:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3836343030",
                              "id": 2826,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8498:5:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              },
                              "value": "86400"
                            },
                            "src": "8492:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8485:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": "uint64"
                        },
                        "id": 2828,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8485:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50726f6a656374204d616e61676572",
                        "id": 2829,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8506:17:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_adaf1d12fca5ce6fad6273b131177876cc8f9094eee130fa4b0b445ceabc4ee5",
                          "typeString": "literal_string \"Project Manager\""
                        },
                        "value": "Project Manager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_adaf1d12fca5ce6fad6273b131177876cc8f9094eee130fa4b0b445ceabc4ee5",
                          "typeString": "literal_string \"Project Manager\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2819,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "8446:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addEmployee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 449,
                      "src": "8446:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint64_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint64,string memory) external"
                      }
                    },
                    "id": 2830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8446:78:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2831,
                  "nodeType": "ExpressionStatement",
                  "src": "8446:78:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2835,
                        "name": "account3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2722,
                        "src": "8554:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2836,
                        "name": "salary3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2738,
                        "src": "8564:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2838,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15155,
                              "src": "8580:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "313732383030",
                              "id": 2839,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8586:6:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_172800_by_1",
                                "typeString": "int_const 172800"
                              },
                              "value": "172800"
                            },
                            "src": "8580:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8573:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": "uint64"
                        },
                        "id": 2841,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8573:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "446576656c6f706572",
                        "id": 2842,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8595:11:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e9382a7c65097a9587879afb193759dbfc4bfcfdf3e5a296379d7f2e1e5cacd1",
                          "typeString": "literal_string \"Developer\""
                        },
                        "value": "Developer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e9382a7c65097a9587879afb193759dbfc4bfcfdf3e5a296379d7f2e1e5cacd1",
                          "typeString": "literal_string \"Developer\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2832,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "8534:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2834,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addEmployee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 449,
                      "src": "8534:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint64_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint64,string memory) external"
                      }
                    },
                    "id": 2843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8534:73:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2844,
                  "nodeType": "ExpressionStatement",
                  "src": "8534:73:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2848,
                        "name": "account4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2726,
                        "src": "8637:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2849,
                        "name": "salary4",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2742,
                        "src": "8647:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2851,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15155,
                              "src": "8663:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "313732383030",
                              "id": 2852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8669:6:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_172800_by_1",
                                "typeString": "int_const 172800"
                              },
                              "value": "172800"
                            },
                            "src": "8663:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8656:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": "uint64"
                        },
                        "id": 2854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8656:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "446576656c6f706572",
                        "id": 2855,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8678:11:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e9382a7c65097a9587879afb193759dbfc4bfcfdf3e5a296379d7f2e1e5cacd1",
                          "typeString": "literal_string \"Developer\""
                        },
                        "value": "Developer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e9382a7c65097a9587879afb193759dbfc4bfcfdf3e5a296379d7f2e1e5cacd1",
                          "typeString": "literal_string \"Developer\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2845,
                        "name": "payroll",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "8617:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Payroll_$1984",
                          "typeString": "contract Payroll"
                        }
                      },
                      "id": 2847,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addEmployee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 449,
                      "src": "8617:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint64_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint64,string memory) external"
                      }
                    },
                    "id": 2856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8617:73:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2857,
                  "nodeType": "ExpressionStatement",
                  "src": "8617:73:1"
                }
              ]
            },
            "documentation": null,
            "id": 2859,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addEmployees",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2715,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2708,
                  "name": "payroll",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "7317:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Payroll_$1984",
                    "typeString": "contract Payroll"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2707,
                    "name": "Payroll",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1984,
                    "src": "7317:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Payroll_$1984",
                      "typeString": "contract Payroll"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2710,
                  "name": "root",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "7334:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2709,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7334:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2712,
                  "name": "token1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "7348:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2711,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "7348:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2714,
                  "name": "token2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "7368:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2713,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "7368:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7316:71:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 2716,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7397:0:1"
            },
            "scope": 2860,
            "src": "7295:1402:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2861,
        "src": "2402:6297:1"
      }
    ],
    "src": "0:8700:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-09-04T11:02:55.610Z"
}