{
  "contractName": "KitBase",
  "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"
    },
    {
      "inputs": [
        {
          "name": "_fac",
          "type": "address"
        },
        {
          "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": true,
      "inputs": [
        {
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "latestVersionAppBase",
      "outputs": [
        {
          "name": "base",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405160408061083083398101604052805160209091015160008054600160a060020a031916600160a060020a03808416919091178255831615156101505760408051808201909152600881527f626172652d6b6974000000000000000000000000000000000000000000000000602082015261009690640100000000610174810204565b90506100aa81640100000000610276810204565b600160a060020a031663c3b314726040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050506040513d602081101561012a57600080fd5b505160018054600160a060020a031916600160a060020a0390921691909117905561016c565b60018054600160a060020a031916600160a060020a0385161790555b505050610494565b60007f9065c3e7f7b7ef1ef4e53d2d0b8e0cef02874ab020c1ece79d5f0d3d0111c0ba600102826040518082805190602001908083835b602083106101ca5780518252601f1990920191602091820191016101ab565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208282019790975281840196909652825180820384018152606090910192839052805190959294508493509185019190508083835b602083106102445780518252601f199092019160209182019101610225565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b60008054604080517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810185905290518392600160a060020a031691630178b8bf91602480830192602092919082900301818787803b1580156102dc57600080fd5b505af11580156102f0573d6000803e3d6000fd5b505050506040513d602081101561030657600080fd5b5051604080517f3b3b57de000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a0390921691633b3b57de916024808201926020929091908290030181600087803b15801561036c57600080fd5b505af1158015610380573d6000803e3d6000fd5b505050506040513d602081101561039657600080fd5b5051604080517fc36af4600000000000000000000000000000000000000000000000000000000081529051919250600160a060020a0383169163c36af4609160048082019260009290919082900301818387803b1580156103f657600080fd5b505af115801561040a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260a081101561043357600080fd5b6060820151608083018051919284019184919064010000000081111561045857600080fd5b8201602081018481111561046b57600080fd5b815164010000000081118282018710171561048557600080fd5b50949998505050505050505050565b61038d806104a36000396000f3006080604052600436106100565763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633f15457f811461005b578063c3b3147214610099578063c6d2c717146100ae575b600080fd5b34801561006757600080fd5b506100706100c6565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100a557600080fd5b506100706100e2565b3480156100ba57600080fd5b506100706004356100fe565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60008054604080517f0178b8bf000000000000000000000000000000000000000000000000000000008152600481018590529051839273ffffffffffffffffffffffffffffffffffffffff1691630178b8bf91602480830192602092919082900301818787803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b505050506040513d602081101561019b57600080fd5b5051604080517f3b3b57de00000000000000000000000000000000000000000000000000000000815260048101869052905173ffffffffffffffffffffffffffffffffffffffff90921691633b3b57de916024808201926020929091908290030181600087803b15801561020e57600080fd5b505af1158015610222573d6000803e3d6000fd5b505050506040513d602081101561023857600080fd5b5051604080517fc36af460000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff83169163c36af4609160048082019260009290919082900301818387803b1580156102a557600080fd5b505af11580156102b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260a081101561030057600080fd5b6060820151608083018051919284019184919064010000000081111561032557600080fd5b8201602081018481111561033857600080fd5b815164010000000081118282018710171561035257600080fd5b509499985050505050505050505600a165627a7a72305820f1b21a20a36dd64d9d7cad1ee586320308ebdf7015d3c6c5ffa8f135840aa9b70029",
  "deployedBytecode": "0x6080604052600436106100565763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633f15457f811461005b578063c3b3147214610099578063c6d2c717146100ae575b600080fd5b34801561006757600080fd5b506100706100c6565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100a557600080fd5b506100706100e2565b3480156100ba57600080fd5b506100706004356100fe565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60008054604080517f0178b8bf000000000000000000000000000000000000000000000000000000008152600481018590529051839273ffffffffffffffffffffffffffffffffffffffff1691630178b8bf91602480830192602092919082900301818787803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b505050506040513d602081101561019b57600080fd5b5051604080517f3b3b57de00000000000000000000000000000000000000000000000000000000815260048101869052905173ffffffffffffffffffffffffffffffffffffffff90921691633b3b57de916024808201926020929091908290030181600087803b15801561020e57600080fd5b505af1158015610222573d6000803e3d6000fd5b505050506040513d602081101561023857600080fd5b5051604080517fc36af460000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff83169163c36af4609160048082019260009290919082900301818387803b1580156102a557600080fd5b505af11580156102b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260a081101561030057600080fd5b6060820151608083018051919284019184919064010000000081111561032557600080fd5b8201602081018481111561033857600080fd5b815164010000000081118282018710171561035257600080fd5b509499985050505050505050505600a165627a7a72305820f1b21a20a36dd64d9d7cad1ee586320308ebdf7015d3c6c5ffa8f135840aa9b70029",
  "sourceMap": "1036:1363:1:-;;;1247:353;8:9:-1;5:2;;;30:1;27;20:12;5:2;1247:353:1;;;;;;;;;;;;;;;;;;;1437:15;1303:10;;-1:-1:-1;;;;;;1303:10:1;-1:-1:-1;;;;;1303:10:1;;;;;;;;;1394:27;;;1390:204;;;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;;;;;;;;;1390:204;;;1573:3;:10;;-1:-1:-1;;;;;;1573:10:1;-1:-1:-1;;;;;1573:10:1;;;;;1390:204;1247:353;;;1036:1363;;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;1036:1363::-;;;;;;;",
  "deployedSourceMap": "1036:1363:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1102:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1102:14: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;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",
  "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.570Z"
}