{
  "contractName": "APMRegistryFactory",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "REPO_APP_NAME",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APM_APP_NAME",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ENS_SUB_APP_NAME",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "registryBase",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ensSubdomainRegistrarBase",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ens",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "daoFactory",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_tld",
          "type": "bytes32"
        },
        {
          "name": "_label",
          "type": "bytes32"
        },
        {
          "name": "_root",
          "type": "address"
        }
      ],
      "name": "newAPM",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "repoBase",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_daoFactory",
          "type": "address"
        },
        {
          "name": "_registryBase",
          "type": "address"
        },
        {
          "name": "_repoBase",
          "type": "address"
        },
        {
          "name": "_ensSubBase",
          "type": "address"
        },
        {
          "name": "_ens",
          "type": "address"
        },
        {
          "name": "_ensFactory",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "apm",
          "type": "address"
        }
      ],
      "name": "DeployAPM",
      "type": "event"
    }
  ],
  "bytecode": "0x6060604052341561000f57600080fd5b60405160c08062002c9583398101604052808051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091905050856000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610254578073ffffffffffffffffffffffffffffffffffffffff1663e9358b01306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561023457600080fd5b6102c65a03f1151561024557600080fd5b50505060405180519050610256565b815b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506129e980620002ac6000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063023d6c031461009e5780631219d5c81461012c578063231cb6ab146101ba57806339ca6e86146102485780633cfb35aa1461029d5780633f15457f146102f257806348f7f2a314610347578063aac57b3a1461039c578063caf1bb7c1461042f575b600080fd5b34156100a957600080fd5b6100b1610484565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f15780820151818401526020810190506100d6565b50505050905090810190601f16801561011e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561013757600080fd5b61013f6104bd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561017f578082015181840152602081019050610164565b50505050905090810190601f1680156101ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101c557600080fd5b6101cd6104f6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561020d5780820151818401526020810190506101f2565b50505050905090810190601f16801561023a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025357600080fd5b61025b61052f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102a857600080fd5b6102b0610555565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102fd57600080fd5b61030561057b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561035257600080fd5b61035a6105a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103a757600080fd5b6103ed6004808035600019169060200190919080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043a57600080fd5b610442612652565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6040805190810160405280600881526020017f61706d2d7265706f00000000000000000000000000000000000000000000000081525081565b6040805190810160405280600c81526020017f61706d2d7265676973747279000000000000000000000000000000000000000081525081565b6040805190810160405280600a81526020017f61706d2d656e737375620000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000806105da61297d565b8b8b604051808360001916600019168152602001826000191660001916815260200192505050604051809103902097503073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be38a6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156106c257600080fd5b6102c65a03f115156106d357600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff161415156107eb57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59238d8d306040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180846000191660001916815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b15156107d657600080fd5b6102c65a03f115156107e757600080fd5b5050505b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321687444306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156108af57600080fd5b6102c65a03f115156108c057600080fd5b5050506040518051905096508673ffffffffffffffffffffffffffffffffffffffff1663de2873596000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561093857600080fd5b6102c65a03f1151561094957600080fd5b5050506040518051905095508573ffffffffffffffffffffffffffffffffffffffff1663be03847830898a73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156109df57600080fd5b6102c65a03f115156109f057600080fd5b50505060405180519050306040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515610aed57600080fd5b6102c65a03f11515610afe57600080fd5b5050508673ffffffffffffffffffffffffffffffffffffffff1663db8a61d46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610b6d57600080fd5b6102c65a03f11515610b7e57600080fd5b5050506040518051905094508673ffffffffffffffffffffffffffffffffffffffff166380cd5ac3896040805190810160405280600a81526020017f61706d2d656e73737562000000000000000000000000000000000000000000008152506040518082805190602001908083835b602083101515610c125780518252602082019150602081019050602083039250610bed565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518083600019166000191681526020018260001916600019168152602001925050506040518091039020600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515610d2357600080fd5b6102c65a03f11515610d3457600080fd5b5050506040518051905093508673ffffffffffffffffffffffffffffffffffffffff166380cd5ac3896040805190810160405280600c81526020017f61706d2d726567697374727900000000000000000000000000000000000000008152506040518082805190602001908083835b602083101515610dc85780518252602082019150602081019050602083039250610da3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518083600019166000191681526020018260001916600019168152602001925050506040518091039020600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515610ed957600080fd5b6102c65a03f11515610eea57600080fd5b5050506040518051905092508673ffffffffffffffffffffffffffffffffffffffff1663ae5b2540868a6040805190810160405280600881526020017f61706d2d7265706f0000000000000000000000000000000000000000000000008152506040518082805190602001908083835b602083101515610f7f5780518252602082019150602081019050602083039250610f5a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518083600019166000191681526020018260001916600019168152602001925050506040518091039020600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051602001526040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180846000191660001916815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b151561109f57600080fd5b6102c65a03f115156110b057600080fd5b505050604051805190505087600019167f5dd941cb8701bb50205e5aef88c8532b8d6e75b7b65e2c458e9acdf261f0f29284604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a28573ffffffffffffffffffffffffffffffffffffffff1663be03847884868773ffffffffffffffffffffffffffffffffffffffff1663fef47e386000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156111ad57600080fd5b6102c65a03f115156111be57600080fd5b505050604051805190508e6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156112bb57600080fd5b6102c65a03f115156112cc57600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847884868773ffffffffffffffffffffffffffffffffffffffff1663307482cf6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561135957600080fd5b6102c65a03f1151561136a57600080fd5b505050604051805190508e6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b151561146757600080fd5b6102c65a03f1151561147857600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156114e757600080fd5b6102c65a03f115156114f857600080fd5b5050506040518051905091508573ffffffffffffffffffffffffffffffffffffffff16630a8ed3db8488856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b15156115e257600080fd5b6102c65a03f115156115f357600080fd5b505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635b0fc9c389866040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15156116c257600080fd5b6102c65a03f115156116d357600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff1663be13f47c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050600060405180830381600087803b15156117a257600080fd5b6102c65a03f115156117b357600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff1663c4d66de8856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561185057600080fd5b6102c65a03f1151561186157600080fd5b505050600181600060038110151561187557fe5b602002019061ffff16908161ffff16815250508573ffffffffffffffffffffffffffffffffffffffff1663be03847830858673ffffffffffffffffffffffffffffffffffffffff16635e1f3fa86000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561191257600080fd5b6102c65a03f1151561192357600080fd5b50505060405180519050306040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515611a2057600080fd5b6102c65a03f11515611a3157600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff166332ab6af06040805190810160405280600c81526020017f61706d2d726567697374727900000000000000000000000000000000000000008152508c84600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611ae96040805190810160405280600881526020017f697066733a61706d000000000000000000000000000000000000000000000000815250612678565b6000604051602001526040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600360200280838360005b83811015611b7e578082015181840152602081019050611b63565b505050509050018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838103835288818151815260200191508051906020019080838360005b83811015611bf3578082015181840152602081019050611bd8565b50505050905090810190601f168015611c205780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611c59578082015181840152602081019050611c3e565b50505050905090810190601f168015611c865780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1515611ca957600080fd5b6102c65a03f11515611cba57600080fd5b50505060405180519050508273ffffffffffffffffffffffffffffffffffffffff166332ab6af06040805190810160405280600a81526020017f61706d2d656e73737562000000000000000000000000000000000000000000008152508c84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d7a6040805190810160405280600b81526020017f697066733a656e73737562000000000000000000000000000000000000000000815250612678565b6000604051602001526040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600360200280838360005b83811015611e0f578082015181840152602081019050611df4565b505050509050018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838103835288818151815260200191508051906020019080838360005b83811015611e84578082015181840152602081019050611e69565b50505050905090810190601f168015611eb15780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611eea578082015181840152602081019050611ecf565b50505050905090810190601f168015611f175780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1515611f3a57600080fd5b6102c65a03f11515611f4b57600080fd5b50505060405180519050508273ffffffffffffffffffffffffffffffffffffffff166332ab6af06040805190810160405280600881526020017f61706d2d7265706f0000000000000000000000000000000000000000000000008152508c84600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661200b6040805190810160405280600981526020017f697066733a7265706f0000000000000000000000000000000000000000000000815250612678565b6000604051602001526040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600360200280838360005b838110156120a0578082015181840152602081019050612085565b505050509050018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838103835288818151815260200191508051906020019080838360005b838110156121155780820151818401526020810190506120fa565b50505050905090810190601f1680156121425780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561217b578082015181840152602081019050612160565b50505050905090810190601f1680156121a85780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b15156121cb57600080fd5b6102c65a03f115156121dc57600080fd5b50505060405180519050506121f286848c612688565b8573ffffffffffffffffffffffffffffffffffffffff1663afd925df8b898a73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561227c57600080fd5b6102c65a03f1151561228d57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561235657600080fd5b6102c65a03f1151561236757600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16639d0effdb3088856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561244857600080fd5b6102c65a03f1151561245957600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16630a8ed3db8b88856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561253a57600080fd5b6102c65a03f1151561254b57600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663afd925df8b88856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561262c57600080fd5b6102c65a03f1151561263d57600080fd5b50505082985050505050505050509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6126806129a9565b819050919050565b8273ffffffffffffffffffffffffffffffffffffffff16630a8ed3db82848573ffffffffffffffffffffffffffffffffffffffff16635e1f3fa86000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561271257600080fd5b6102c65a03f1151561272357600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b15156127ec57600080fd5b6102c65a03f115156127fd57600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff1663afd925df82848573ffffffffffffffffffffffffffffffffffffffff16635e1f3fa86000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561288a57600080fd5b6102c65a03f1151561289b57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561296457600080fd5b6102c65a03f1151561297557600080fd5b505050505050565b6060604051908101604052806003905b600061ffff1681526020019060019003908161298d5790505090565b6020604051908101604052806000815250905600a165627a7a723058201a780cb0a57007271bcb4d994425e0ef3910cebcac788b8cdc4c0244dccf48400029",
  "deployedBytecode": "0x606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063023d6c031461009e5780631219d5c81461012c578063231cb6ab146101ba57806339ca6e86146102485780633cfb35aa1461029d5780633f15457f146102f257806348f7f2a314610347578063aac57b3a1461039c578063caf1bb7c1461042f575b600080fd5b34156100a957600080fd5b6100b1610484565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f15780820151818401526020810190506100d6565b50505050905090810190601f16801561011e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561013757600080fd5b61013f6104bd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561017f578082015181840152602081019050610164565b50505050905090810190601f1680156101ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101c557600080fd5b6101cd6104f6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561020d5780820151818401526020810190506101f2565b50505050905090810190601f16801561023a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025357600080fd5b61025b61052f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102a857600080fd5b6102b0610555565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102fd57600080fd5b61030561057b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561035257600080fd5b61035a6105a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103a757600080fd5b6103ed6004808035600019169060200190919080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043a57600080fd5b610442612652565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6040805190810160405280600881526020017f61706d2d7265706f00000000000000000000000000000000000000000000000081525081565b6040805190810160405280600c81526020017f61706d2d7265676973747279000000000000000000000000000000000000000081525081565b6040805190810160405280600a81526020017f61706d2d656e737375620000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000806105da61297d565b8b8b604051808360001916600019168152602001826000191660001916815260200192505050604051809103902097503073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be38a6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156106c257600080fd5b6102c65a03f115156106d357600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff161415156107eb57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59238d8d306040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180846000191660001916815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b15156107d657600080fd5b6102c65a03f115156107e757600080fd5b5050505b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321687444306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156108af57600080fd5b6102c65a03f115156108c057600080fd5b5050506040518051905096508673ffffffffffffffffffffffffffffffffffffffff1663de2873596000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561093857600080fd5b6102c65a03f1151561094957600080fd5b5050506040518051905095508573ffffffffffffffffffffffffffffffffffffffff1663be03847830898a73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156109df57600080fd5b6102c65a03f115156109f057600080fd5b50505060405180519050306040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515610aed57600080fd5b6102c65a03f11515610afe57600080fd5b5050508673ffffffffffffffffffffffffffffffffffffffff1663db8a61d46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610b6d57600080fd5b6102c65a03f11515610b7e57600080fd5b5050506040518051905094508673ffffffffffffffffffffffffffffffffffffffff166380cd5ac3896040805190810160405280600a81526020017f61706d2d656e73737562000000000000000000000000000000000000000000008152506040518082805190602001908083835b602083101515610c125780518252602082019150602081019050602083039250610bed565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518083600019166000191681526020018260001916600019168152602001925050506040518091039020600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515610d2357600080fd5b6102c65a03f11515610d3457600080fd5b5050506040518051905093508673ffffffffffffffffffffffffffffffffffffffff166380cd5ac3896040805190810160405280600c81526020017f61706d2d726567697374727900000000000000000000000000000000000000008152506040518082805190602001908083835b602083101515610dc85780518252602082019150602081019050602083039250610da3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518083600019166000191681526020018260001916600019168152602001925050506040518091039020600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515610ed957600080fd5b6102c65a03f11515610eea57600080fd5b5050506040518051905092508673ffffffffffffffffffffffffffffffffffffffff1663ae5b2540868a6040805190810160405280600881526020017f61706d2d7265706f0000000000000000000000000000000000000000000000008152506040518082805190602001908083835b602083101515610f7f5780518252602082019150602081019050602083039250610f5a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518083600019166000191681526020018260001916600019168152602001925050506040518091039020600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051602001526040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180846000191660001916815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b151561109f57600080fd5b6102c65a03f115156110b057600080fd5b505050604051805190505087600019167f5dd941cb8701bb50205e5aef88c8532b8d6e75b7b65e2c458e9acdf261f0f29284604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a28573ffffffffffffffffffffffffffffffffffffffff1663be03847884868773ffffffffffffffffffffffffffffffffffffffff1663fef47e386000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156111ad57600080fd5b6102c65a03f115156111be57600080fd5b505050604051805190508e6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156112bb57600080fd5b6102c65a03f115156112cc57600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847884868773ffffffffffffffffffffffffffffffffffffffff1663307482cf6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561135957600080fd5b6102c65a03f1151561136a57600080fd5b505050604051805190508e6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b151561146757600080fd5b6102c65a03f1151561147857600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156114e757600080fd5b6102c65a03f115156114f857600080fd5b5050506040518051905091508573ffffffffffffffffffffffffffffffffffffffff16630a8ed3db8488856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b15156115e257600080fd5b6102c65a03f115156115f357600080fd5b505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635b0fc9c389866040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15156116c257600080fd5b6102c65a03f115156116d357600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff1663be13f47c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050600060405180830381600087803b15156117a257600080fd5b6102c65a03f115156117b357600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff1663c4d66de8856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561185057600080fd5b6102c65a03f1151561186157600080fd5b505050600181600060038110151561187557fe5b602002019061ffff16908161ffff16815250508573ffffffffffffffffffffffffffffffffffffffff1663be03847830858673ffffffffffffffffffffffffffffffffffffffff16635e1f3fa86000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561191257600080fd5b6102c65a03f1151561192357600080fd5b50505060405180519050306040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515611a2057600080fd5b6102c65a03f11515611a3157600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff166332ab6af06040805190810160405280600c81526020017f61706d2d726567697374727900000000000000000000000000000000000000008152508c84600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611ae96040805190810160405280600881526020017f697066733a61706d000000000000000000000000000000000000000000000000815250612678565b6000604051602001526040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600360200280838360005b83811015611b7e578082015181840152602081019050611b63565b505050509050018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838103835288818151815260200191508051906020019080838360005b83811015611bf3578082015181840152602081019050611bd8565b50505050905090810190601f168015611c205780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611c59578082015181840152602081019050611c3e565b50505050905090810190601f168015611c865780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1515611ca957600080fd5b6102c65a03f11515611cba57600080fd5b50505060405180519050508273ffffffffffffffffffffffffffffffffffffffff166332ab6af06040805190810160405280600a81526020017f61706d2d656e73737562000000000000000000000000000000000000000000008152508c84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d7a6040805190810160405280600b81526020017f697066733a656e73737562000000000000000000000000000000000000000000815250612678565b6000604051602001526040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600360200280838360005b83811015611e0f578082015181840152602081019050611df4565b505050509050018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838103835288818151815260200191508051906020019080838360005b83811015611e84578082015181840152602081019050611e69565b50505050905090810190601f168015611eb15780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611eea578082015181840152602081019050611ecf565b50505050905090810190601f168015611f175780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1515611f3a57600080fd5b6102c65a03f11515611f4b57600080fd5b50505060405180519050508273ffffffffffffffffffffffffffffffffffffffff166332ab6af06040805190810160405280600881526020017f61706d2d7265706f0000000000000000000000000000000000000000000000008152508c84600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661200b6040805190810160405280600981526020017f697066733a7265706f0000000000000000000000000000000000000000000000815250612678565b6000604051602001526040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600360200280838360005b838110156120a0578082015181840152602081019050612085565b505050509050018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838103835288818151815260200191508051906020019080838360005b838110156121155780820151818401526020810190506120fa565b50505050905090810190601f1680156121425780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561217b578082015181840152602081019050612160565b50505050905090810190601f1680156121a85780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b15156121cb57600080fd5b6102c65a03f115156121dc57600080fd5b50505060405180519050506121f286848c612688565b8573ffffffffffffffffffffffffffffffffffffffff1663afd925df8b898a73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561227c57600080fd5b6102c65a03f1151561228d57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561235657600080fd5b6102c65a03f1151561236757600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16639d0effdb3088856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561244857600080fd5b6102c65a03f1151561245957600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16630a8ed3db8b88856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561253a57600080fd5b6102c65a03f1151561254b57600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663afd925df8b88856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561262c57600080fd5b6102c65a03f1151561263d57600080fd5b50505082985050505050505050509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6126806129a9565b819050919050565b8273ffffffffffffffffffffffffffffffffffffffff16630a8ed3db82848573ffffffffffffffffffffffffffffffffffffffff16635e1f3fa86000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561271257600080fd5b6102c65a03f1151561272357600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b15156127ec57600080fd5b6102c65a03f115156127fd57600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff1663afd925df82848573ffffffffffffffffffffffffffffffffffffffff16635e1f3fa86000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561288a57600080fd5b6102c65a03f1151561289b57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561296457600080fd5b6102c65a03f1151561297557600080fd5b505050505050565b6060604051908101604052806003905b600061ffff1681526020019060019003908161298d5790505090565b6020604051908101604052806000815250905600a165627a7a723058201a780cb0a57007271bcb4d994425e0ef3910cebcac788b8cdc4c0244dccf48400029",
  "sourceMap": "191:3826:36:-;;;526:721;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:11;814:10;;:24;;;;;;;;;;;;;;;;;;863:13;848:12;;:28;;;;;;;;;;;;;;;;;;897:9;886:8;;:20;;;;;;;;;;;;;;;;;;944:11;916:25;;:39;;;;;;;;;;;;;;;;;;1204:1;1188:18;;:4;:18;;;;:52;;1216:11;:18;;;1235:4;1216:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1188:52;;;1209:4;1188:52;1182:3;;:58;;;;;;;;;;;;;;;;;;526:721;;;;;;191:3826;;;;;;",
  "deployedSourceMap": "191:3826:36:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;415:49:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;357:52:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;470:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;283:31:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;346:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;406:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;249:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:2364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;320:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;415:49:14;;;;;;;;;;;;;;;;;;;;:::o;357:52::-;;;;;;;;;;;;;;;;;;;;:::o;470:54::-;;;;;;;;;;;;;;;;;;;;:::o;283:31:36:-;;;;;;;;;;;;;:::o;346:54::-;;;;;;;;;;;;;:::o;406:14::-;;;;;;;;;;;;;:::o;249:28::-;;;;;;;;;;;;;:::o;1253:2364::-;1330:11;1353:12;1638:10;1684:7;1791:17;1877:28;2032:15;2592:16;2830:29;;:::i;:::-;1378:4;1384:6;1368:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1353:38;;1470:4;1443:32;;:3;;;;;;;;;;;:9;;;1453:4;1443:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;1439:189;;;1578:3;;;;;;;;;;;:19;;;1598:4;1604:6;1612:4;1578:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1439:189;1651:10;;;;;;;;;;;:17;;;1669:4;1651:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1638:36;;1698:3;:7;;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1684:24;;1719:3;:20;;;1740:4;1746:3;1751;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1775:4;1719:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1811:3;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1791:45;;1930:3;:18;;;1959:4;1975:16;;;;;;;;;;;;;;;;;;1965:27;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;1949:44:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1995:25;;;;;;;;;;;1930:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1877:145;;2062:3;:18;;;2091:4;2107:12;;;;;;;;;;;;;;;;;;2097:23;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;2081:40:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2123:12;;;;;;;;;;;2062:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2032:105;;2186:3;:10;;;2197:9;2218:4;2234:13;;;;;;;;;;;;;;;;;;2224:24;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;2208:41:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2251:8;;;;;;;;;;;2186:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2281:4;2271:20;;;;2287:3;2271:20;;;;;;;;;;;;;;;;;;;;;;2371:3;:20;;;2392:3;2397:6;2405;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2432:5;2371:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2448:3;:20;;;2469:3;2474:6;2482;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2512:5;2448:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2611:3;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:48;;2651:3;:19;;;2671:3;2676;2681:8;2651:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2723:3;;;;;;;;;;;:12;;;2736:4;2742:6;2723:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2759:6;:17;;;2777:3;;;;;;;;;;;2782:4;2759:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2797:3;:14;;;2812:6;2797:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2887:1;2869:12;2882:1;2869:15;;;;;;;;;;;;:19;;;;;;;;;;;2899:3;:20;;;2920:4;2926:3;2931;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2955:4;2899:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2971:3;:22;;;2994:12;;;;;;;;;;;;;;;;;;3008:5;3015:12;3029;;;;;;;;;;;3043:13;;;;;;;;;;;;;;;;;;;:1;:13::i;:::-;2971:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2971:86:36;3067:3;:22;;;3090:16;;;;;;;;;;;;;;;;;;3108:5;3115:12;3129:25;;;;;;;;;;;3156:16;;;;;;;;;;;;;;;;;;;:1;:16::i;:::-;3067:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3067:106:36;3183:3;:22;;;3206:13;;;;;;;;;;;;;;;;;;3221:5;3228:12;3242:8;;;;;;;;;;;3252:14;;;;;;;;;;;;;;;;;;;:1;:14::i;:::-;3183:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3183:84:36;3278:40;3302:3;3307;3312:5;3278:23;:40::i;:::-;3371:3;:24;;;3396:5;3403:3;3408;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3371:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3441:3;:20;;;3462:4;3468:3;3473:8;3441:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3492:3;:19;;;3512:5;3519:3;3524:8;3492:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3543:3;:24;;;3568:5;3575:3;3580:8;3543:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3607:3;3600:10;;1253:2364;;;;;;;;;;;;;:::o;320:20::-;;;;;;;;;;;;;:::o;3623:96::-;3674:14;;:::i;:::-;3710:1;3700:12;;3623:96;;;:::o;3782:233::-;3877:4;:20;;;3898:5;3905:4;3911;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3877:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3945:4;:25;;;3971:5;3978:4;3984;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3945:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3782:233;;;:::o;191:3826::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.18;\n\n\nimport \"../apm/APMRegistry.sol\";\nimport \"../ens/ENSSubdomainRegistrar.sol\";\n\nimport \"./DAOFactory.sol\";\nimport \"./ENSFactory.sol\";\nimport \"./AppProxyFactory.sol\";\n\n\ncontract APMRegistryFactory is APMRegistryConstants {\n    DAOFactory public daoFactory;\n    APMRegistry public registryBase;\n    Repo public repoBase;\n    ENSSubdomainRegistrar public ensSubdomainRegistrarBase;\n    ENS public ens;\n\n    event DeployAPM(bytes32 indexed node, address apm);\n\n    // Needs either one ENS or ENSFactory\n    function APMRegistryFactory(\n        DAOFactory _daoFactory,\n        APMRegistry _registryBase,\n        Repo _repoBase,\n        ENSSubdomainRegistrar _ensSubBase,\n        ENS _ens,\n        ENSFactory _ensFactory\n    ) public // DAO initialized without evmscript run support\n    {\n        daoFactory = _daoFactory;\n        registryBase = _registryBase;\n        repoBase = _repoBase;\n        ensSubdomainRegistrarBase = _ensSubBase;\n\n        // Either the ENS address provided is used, if any.\n        // Or we use the ENSFactory to generate a test instance of ENS\n        // If not the ENS address nor factory address are provided, this will revert\n        ens = _ens != address(0) ? _ens : _ensFactory.newENS(this);\n    }\n\n    function newAPM(bytes32 _tld, bytes32 _label, address _root) public returns (APMRegistry) {\n        bytes32 node = keccak256(_tld, _label);\n\n        // Assume it is the test ENS\n        if (ens.owner(node) != address(this)) {\n            // If we weren't in test ens and factory doesn't have ownership, will fail\n            ens.setSubnodeOwner(_tld, _label, this);\n        }\n\n        Kernel dao = daoFactory.newDAO(this);\n        ACL acl = ACL(dao.acl());\n\n        acl.createPermission(this, dao, dao.APP_MANAGER_ROLE(), this);\n\n        bytes32 namespace = dao.APP_BASES_NAMESPACE();\n\n        // Deploy app proxies\n        ENSSubdomainRegistrar ensSub = ENSSubdomainRegistrar(dao.newAppInstance(keccak256(node, keccak256(ENS_SUB_APP_NAME)), ensSubdomainRegistrarBase));\n        APMRegistry apm = APMRegistry(dao.newAppInstance(keccak256(node, keccak256(APM_APP_NAME)), registryBase));\n\n        // APMRegistry controls Repos\n        dao.setApp(namespace, keccak256(node, keccak256(REPO_APP_NAME)), repoBase);\n\n        DeployAPM(node, apm);\n\n        // Grant permissions needed for APM on ENSSubdomainRegistrar\n        acl.createPermission(apm, ensSub, ensSub.CREATE_NAME_ROLE(), _root);\n        acl.createPermission(apm, ensSub, ensSub.POINT_ROOTNODE_ROLE(), _root);\n\n        // allow apm to create permissions for Repos in Kernel\n        bytes32 permRole = acl.CREATE_PERMISSIONS_ROLE();\n\n        acl.grantPermission(apm, acl, permRole);\n\n        // Initialize\n        ens.setOwner(node, ensSub);\n        ensSub.initialize(ens, node);\n        apm.initialize(ensSub);\n\n        uint16[3] memory firstVersion;\n        firstVersion[0] = 1;\n\n        acl.createPermission(this, apm, apm.CREATE_REPO_ROLE(), this);\n\n        apm.newRepoWithVersion(APM_APP_NAME, _root, firstVersion, registryBase, b(\"ipfs:apm\"));\n        apm.newRepoWithVersion(ENS_SUB_APP_NAME, _root, firstVersion, ensSubdomainRegistrarBase, b(\"ipfs:enssub\"));\n        apm.newRepoWithVersion(REPO_APP_NAME, _root, firstVersion, repoBase, b(\"ipfs:repo\"));\n\n        configureAPMPermissions(acl, apm, _root);\n\n        // Permission transition to _root\n        acl.setPermissionManager(_root, dao, dao.APP_MANAGER_ROLE());\n        acl.revokePermission(this, acl, permRole);\n        acl.grantPermission(_root, acl, permRole);\n        acl.setPermissionManager(_root, acl, permRole);\n\n        return apm;\n    }\n\n    function b(string memory x) internal pure returns (bytes memory y) {\n        y = bytes(x);\n    }\n\n    // Factory can be subclassed and permissions changed\n    function configureAPMPermissions(ACL _acl, APMRegistry _apm, address _root) internal {\n        _acl.grantPermission(_root, _apm, _apm.CREATE_REPO_ROLE());\n        _acl.setPermissionManager(_root, _apm, _apm.CREATE_REPO_ROLE());\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/factory/APMRegistryFactory.sol",
  "ast": {
    "attributes": {
      "absolutePath": "@aragon/os/contracts/factory/APMRegistryFactory.sol",
      "exportedSymbols": {
        "APMRegistryFactory": [
          8975
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.4",
            ".18"
          ]
        },
        "id": 8587,
        "name": "PragmaDirective",
        "src": "0:23:36"
      },
      {
        "attributes": {
          "SourceUnit": 6280,
          "absolutePath": "@aragon/os/contracts/apm/APMRegistry.sol",
          "file": "../apm/APMRegistry.sol",
          "scope": 8976,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 8588,
        "name": "ImportDirective",
        "src": "26:32:36"
      },
      {
        "attributes": {
          "SourceUnit": 7584,
          "absolutePath": "@aragon/os/contracts/ens/ENSSubdomainRegistrar.sol",
          "file": "../ens/ENSSubdomainRegistrar.sol",
          "scope": 8976,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 8589,
        "name": "ImportDirective",
        "src": "59:42:36"
      },
      {
        "attributes": {
          "SourceUnit": 9268,
          "absolutePath": "@aragon/os/contracts/factory/DAOFactory.sol",
          "file": "./DAOFactory.sol",
          "scope": 8976,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 8590,
        "name": "ImportDirective",
        "src": "103:26:36"
      },
      {
        "attributes": {
          "SourceUnit": 9349,
          "absolutePath": "@aragon/os/contracts/factory/ENSFactory.sol",
          "file": "./ENSFactory.sol",
          "scope": 8976,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 8591,
        "name": "ImportDirective",
        "src": "130:26:36"
      },
      {
        "attributes": {
          "SourceUnit": 9081,
          "absolutePath": "@aragon/os/contracts/factory/AppProxyFactory.sol",
          "file": "./AppProxyFactory.sol",
          "scope": 8976,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 8592,
        "name": "ImportDirective",
        "src": "157:31:36"
      },
      {
        "attributes": {
          "contractDependencies": [
            6019
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            8975,
            6019
          ],
          "name": "APMRegistryFactory",
          "scope": 8976
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "APMRegistryConstants",
                  "referencedDeclaration": 6019,
                  "type": "contract APMRegistryConstants"
                },
                "id": 8593,
                "name": "UserDefinedTypeName",
                "src": "222:20:36"
              }
            ],
            "id": 8594,
            "name": "InheritanceSpecifier",
            "src": "222:20:36"
          },
          {
            "attributes": {
              "constant": false,
              "name": "daoFactory",
              "scope": 8975,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract DAOFactory",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DAOFactory",
                  "referencedDeclaration": 9267,
                  "type": "contract DAOFactory"
                },
                "id": 8595,
                "name": "UserDefinedTypeName",
                "src": "249:10:36"
              }
            ],
            "id": 8596,
            "name": "VariableDeclaration",
            "src": "249:28:36"
          },
          {
            "attributes": {
              "constant": false,
              "name": "registryBase",
              "scope": 8975,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract APMRegistry",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "APMRegistry",
                  "referencedDeclaration": 6279,
                  "type": "contract APMRegistry"
                },
                "id": 8597,
                "name": "UserDefinedTypeName",
                "src": "283:11:36"
              }
            ],
            "id": 8598,
            "name": "VariableDeclaration",
            "src": "283:31:36"
          },
          {
            "attributes": {
              "constant": false,
              "name": "repoBase",
              "scope": 8975,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract Repo",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Repo",
                  "referencedDeclaration": 6654,
                  "type": "contract Repo"
                },
                "id": 8599,
                "name": "UserDefinedTypeName",
                "src": "320:4:36"
              }
            ],
            "id": 8600,
            "name": "VariableDeclaration",
            "src": "320:20:36"
          },
          {
            "attributes": {
              "constant": false,
              "name": "ensSubdomainRegistrarBase",
              "scope": 8975,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract ENSSubdomainRegistrar",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ENSSubdomainRegistrar",
                  "referencedDeclaration": 7583,
                  "type": "contract ENSSubdomainRegistrar"
                },
                "id": 8601,
                "name": "UserDefinedTypeName",
                "src": "346:21:36"
              }
            ],
            "id": 8602,
            "name": "VariableDeclaration",
            "src": "346:54:36"
          },
          {
            "attributes": {
              "constant": false,
              "name": "ens",
              "scope": 8975,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract ENS",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ENS",
                  "referencedDeclaration": 10238,
                  "type": "contract ENS"
                },
                "id": 8603,
                "name": "UserDefinedTypeName",
                "src": "406:3:36"
              }
            ],
            "id": 8604,
            "name": "VariableDeclaration",
            "src": "406:14:36"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "DeployAPM"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "node",
                      "scope": 8610,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 8605,
                        "name": "ElementaryTypeName",
                        "src": "443:7:36"
                      }
                    ],
                    "id": 8606,
                    "name": "VariableDeclaration",
                    "src": "443:20:36"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "apm",
                      "scope": 8610,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 8607,
                        "name": "ElementaryTypeName",
                        "src": "465:7:36"
                      }
                    ],
                    "id": 8608,
                    "name": "VariableDeclaration",
                    "src": "465:11:36"
                  }
                ],
                "id": 8609,
                "name": "ParameterList",
                "src": "442:35:36"
              }
            ],
            "id": 8610,
            "name": "EventDefinition",
            "src": "427:51:36"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "modifiers": [
                null
              ],
              "name": "APMRegistryFactory",
              "payable": false,
              "scope": 8975,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_daoFactory",
                      "scope": 8656,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract DAOFactory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DAOFactory",
                          "referencedDeclaration": 9267,
                          "type": "contract DAOFactory"
                        },
                        "id": 8611,
                        "name": "UserDefinedTypeName",
                        "src": "563:10:36"
                      }
                    ],
                    "id": 8612,
                    "name": "VariableDeclaration",
                    "src": "563:22:36"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_registryBase",
                      "scope": 8656,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract APMRegistry",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "APMRegistry",
                          "referencedDeclaration": 6279,
                          "type": "contract APMRegistry"
                        },
                        "id": 8613,
                        "name": "UserDefinedTypeName",
                        "src": "595:11:36"
                      }
                    ],
                    "id": 8614,
                    "name": "VariableDeclaration",
                    "src": "595:25:36"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_repoBase",
                      "scope": 8656,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract Repo",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Repo",
                          "referencedDeclaration": 6654,
                          "type": "contract Repo"
                        },
                        "id": 8615,
                        "name": "UserDefinedTypeName",
                        "src": "630:4:36"
                      }
                    ],
                    "id": 8616,
                    "name": "VariableDeclaration",
                    "src": "630:14:36"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_ensSubBase",
                      "scope": 8656,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract ENSSubdomainRegistrar",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "ENSSubdomainRegistrar",
                          "referencedDeclaration": 7583,
                          "type": "contract ENSSubdomainRegistrar"
                        },
                        "id": 8617,
                        "name": "UserDefinedTypeName",
                        "src": "654:21:36"
                      }
                    ],
                    "id": 8618,
                    "name": "VariableDeclaration",
                    "src": "654:33:36"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_ens",
                      "scope": 8656,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract ENS",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "ENS",
                          "referencedDeclaration": 10238,
                          "type": "contract ENS"
                        },
                        "id": 8619,
                        "name": "UserDefinedTypeName",
                        "src": "697:3:36"
                      }
                    ],
                    "id": 8620,
                    "name": "VariableDeclaration",
                    "src": "697:8:36"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_ensFactory",
                      "scope": 8656,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract ENSFactory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "ENSFactory",
                          "referencedDeclaration": 9348,
                          "type": "contract ENSFactory"
                        },
                        "id": 8621,
                        "name": "UserDefinedTypeName",
                        "src": "715:10:36"
                      }
                    ],
                    "id": 8622,
                    "name": "VariableDeclaration",
                    "src": "715:22:36"
                  }
                ],
                "id": 8623,
                "name": "ParameterList",
                "src": "553:190:36"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8624,
                "name": "ParameterList",
                "src": "804:0:36"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract DAOFactory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8596,
                              "type": "contract DAOFactory",
                              "value": "daoFactory"
                            },
                            "id": 8625,
                            "name": "Identifier",
                            "src": "814:10:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8612,
                              "type": "contract DAOFactory",
                              "value": "_daoFactory"
                            },
                            "id": 8626,
                            "name": "Identifier",
                            "src": "827:11:36"
                          }
                        ],
                        "id": 8627,
                        "name": "Assignment",
                        "src": "814:24:36"
                      }
                    ],
                    "id": 8628,
                    "name": "ExpressionStatement",
                    "src": "814:24:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract APMRegistry"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8598,
                              "type": "contract APMRegistry",
                              "value": "registryBase"
                            },
                            "id": 8629,
                            "name": "Identifier",
                            "src": "848:12:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8614,
                              "type": "contract APMRegistry",
                              "value": "_registryBase"
                            },
                            "id": 8630,
                            "name": "Identifier",
                            "src": "863:13:36"
                          }
                        ],
                        "id": 8631,
                        "name": "Assignment",
                        "src": "848:28:36"
                      }
                    ],
                    "id": 8632,
                    "name": "ExpressionStatement",
                    "src": "848:28:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract Repo"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8600,
                              "type": "contract Repo",
                              "value": "repoBase"
                            },
                            "id": 8633,
                            "name": "Identifier",
                            "src": "886:8:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8616,
                              "type": "contract Repo",
                              "value": "_repoBase"
                            },
                            "id": 8634,
                            "name": "Identifier",
                            "src": "897:9:36"
                          }
                        ],
                        "id": 8635,
                        "name": "Assignment",
                        "src": "886:20:36"
                      }
                    ],
                    "id": 8636,
                    "name": "ExpressionStatement",
                    "src": "886:20:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract ENSSubdomainRegistrar"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8602,
                              "type": "contract ENSSubdomainRegistrar",
                              "value": "ensSubdomainRegistrarBase"
                            },
                            "id": 8637,
                            "name": "Identifier",
                            "src": "916:25:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8618,
                              "type": "contract ENSSubdomainRegistrar",
                              "value": "_ensSubBase"
                            },
                            "id": 8638,
                            "name": "Identifier",
                            "src": "944:11:36"
                          }
                        ],
                        "id": 8639,
                        "name": "Assignment",
                        "src": "916:39:36"
                      }
                    ],
                    "id": 8640,
                    "name": "ExpressionStatement",
                    "src": "916:39:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract ENS"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8604,
                              "type": "contract ENS",
                              "value": "ens"
                            },
                            "id": 8641,
                            "name": "Identifier",
                            "src": "1182:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "contract ENS"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8620,
                                      "type": "contract ENS",
                                      "value": "_ens"
                                    },
                                    "id": 8642,
                                    "name": "Identifier",
                                    "src": "1188:4:36"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "address",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)",
                                          "value": "address"
                                        },
                                        "id": 8643,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "1196:7:36"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 8644,
                                        "name": "Literal",
                                        "src": "1204:1:36"
                                      }
                                    ],
                                    "id": 8645,
                                    "name": "FunctionCall",
                                    "src": "1196:10:36"
                                  }
                                ],
                                "id": 8646,
                                "name": "BinaryOperation",
                                "src": "1188:18:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8620,
                                  "type": "contract ENS",
                                  "value": "_ens"
                                },
                                "id": 8647,
                                "name": "Identifier",
                                "src": "1209:4:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract ENS",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_APMRegistryFactory_$8975",
                                          "typeString": "contract APMRegistryFactory"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "newENS",
                                      "referencedDeclaration": 9347,
                                      "type": "function (address) external returns (contract ENS)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8622,
                                          "type": "contract ENSFactory",
                                          "value": "_ensFactory"
                                        },
                                        "id": 8648,
                                        "name": "Identifier",
                                        "src": "1216:11:36"
                                      }
                                    ],
                                    "id": 8649,
                                    "name": "MemberAccess",
                                    "src": "1216:18:36"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12729,
                                      "type": "contract APMRegistryFactory",
                                      "value": "this"
                                    },
                                    "id": 8650,
                                    "name": "Identifier",
                                    "src": "1235:4:36"
                                  }
                                ],
                                "id": 8651,
                                "name": "FunctionCall",
                                "src": "1216:24:36"
                              }
                            ],
                            "id": 8652,
                            "name": "Conditional",
                            "src": "1188:52:36"
                          }
                        ],
                        "id": 8653,
                        "name": "Assignment",
                        "src": "1182:58:36"
                      }
                    ],
                    "id": 8654,
                    "name": "ExpressionStatement",
                    "src": "1182:58:36"
                  }
                ],
                "id": 8655,
                "name": "Block",
                "src": "804:443:36"
              }
            ],
            "id": 8656,
            "name": "FunctionDefinition",
            "src": "526:721:36"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "newAPM",
              "payable": false,
              "scope": 8975,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tld",
                      "scope": 8930,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 8657,
                        "name": "ElementaryTypeName",
                        "src": "1269:7:36"
                      }
                    ],
                    "id": 8658,
                    "name": "VariableDeclaration",
                    "src": "1269:12:36"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_label",
                      "scope": 8930,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 8659,
                        "name": "ElementaryTypeName",
                        "src": "1283:7:36"
                      }
                    ],
                    "id": 8660,
                    "name": "VariableDeclaration",
                    "src": "1283:14:36"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_root",
                      "scope": 8930,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 8661,
                        "name": "ElementaryTypeName",
                        "src": "1299:7:36"
                      }
                    ],
                    "id": 8662,
                    "name": "VariableDeclaration",
                    "src": "1299:13:36"
                  }
                ],
                "id": 8663,
                "name": "ParameterList",
                "src": "1268:45:36"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 8930,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract APMRegistry",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "APMRegistry",
                          "referencedDeclaration": 6279,
                          "type": "contract APMRegistry"
                        },
                        "id": 8664,
                        "name": "UserDefinedTypeName",
                        "src": "1330:11:36"
                      }
                    ],
                    "id": 8665,
                    "name": "VariableDeclaration",
                    "src": "1330:11:36"
                  }
                ],
                "id": 8666,
                "name": "ParameterList",
                "src": "1329:13:36"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        8668
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "node",
                          "scope": 8930,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 8667,
                            "name": "ElementaryTypeName",
                            "src": "1353:7:36"
                          }
                        ],
                        "id": 8668,
                        "name": "VariableDeclaration",
                        "src": "1353:12:36"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12584,
                              "type": "function () pure returns (bytes32)",
                              "value": "keccak256"
                            },
                            "id": 8669,
                            "name": "Identifier",
                            "src": "1368:9:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8658,
                              "type": "bytes32",
                              "value": "_tld"
                            },
                            "id": 8670,
                            "name": "Identifier",
                            "src": "1378:4:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8660,
                              "type": "bytes32",
                              "value": "_label"
                            },
                            "id": 8671,
                            "name": "Identifier",
                            "src": "1384:6:36"
                          }
                        ],
                        "id": 8672,
                        "name": "FunctionCall",
                        "src": "1368:23:36"
                      }
                    ],
                    "id": 8673,
                    "name": "VariableDeclarationStatement",
                    "src": "1353:38:36"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "owner",
                                  "referencedDeclaration": 10110,
                                  "type": "function (bytes32) view external returns (address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8604,
                                      "type": "contract ENS",
                                      "value": "ens"
                                    },
                                    "id": 8674,
                                    "name": "Identifier",
                                    "src": "1443:3:36"
                                  }
                                ],
                                "id": 8675,
                                "name": "MemberAccess",
                                "src": "1443:9:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8668,
                                  "type": "bytes32",
                                  "value": "node"
                                },
                                "id": 8676,
                                "name": "Identifier",
                                "src": "1453:4:36"
                              }
                            ],
                            "id": 8677,
                            "name": "FunctionCall",
                            "src": "1443:15:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_APMRegistryFactory_$8975",
                                      "typeString": "contract APMRegistryFactory"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 8678,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1462:7:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12729,
                                  "type": "contract APMRegistryFactory",
                                  "value": "this"
                                },
                                "id": 8679,
                                "name": "Identifier",
                                "src": "1470:4:36"
                              }
                            ],
                            "id": 8680,
                            "name": "FunctionCall",
                            "src": "1462:13:36"
                          }
                        ],
                        "id": 8681,
                        "name": "BinaryOperation",
                        "src": "1443:32:36"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_contract$_APMRegistryFactory_$8975",
                                          "typeString": "contract APMRegistryFactory"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "setSubnodeOwner",
                                      "referencedDeclaration": 10191,
                                      "type": "function (bytes32,bytes32,address) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8604,
                                          "type": "contract ENS",
                                          "value": "ens"
                                        },
                                        "id": 8682,
                                        "name": "Identifier",
                                        "src": "1578:3:36"
                                      }
                                    ],
                                    "id": 8684,
                                    "name": "MemberAccess",
                                    "src": "1578:19:36"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8658,
                                      "type": "bytes32",
                                      "value": "_tld"
                                    },
                                    "id": 8685,
                                    "name": "Identifier",
                                    "src": "1598:4:36"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8660,
                                      "type": "bytes32",
                                      "value": "_label"
                                    },
                                    "id": 8686,
                                    "name": "Identifier",
                                    "src": "1604:6:36"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12729,
                                      "type": "contract APMRegistryFactory",
                                      "value": "this"
                                    },
                                    "id": 8687,
                                    "name": "Identifier",
                                    "src": "1612:4:36"
                                  }
                                ],
                                "id": 8688,
                                "name": "FunctionCall",
                                "src": "1578:39:36"
                              }
                            ],
                            "id": 8689,
                            "name": "ExpressionStatement",
                            "src": "1578:39:36"
                          }
                        ],
                        "id": 8690,
                        "name": "Block",
                        "src": "1477:151:36"
                      }
                    ],
                    "id": 8691,
                    "name": "IfStatement",
                    "src": "1439:189:36"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8693
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "dao",
                          "scope": 8930,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract Kernel",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Kernel",
                              "referencedDeclaration": 9891,
                              "type": "contract Kernel"
                            },
                            "id": 8692,
                            "name": "UserDefinedTypeName",
                            "src": "1638:6:36"
                          }
                        ],
                        "id": 8693,
                        "name": "VariableDeclaration",
                        "src": "1638:10:36"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Kernel",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_APMRegistryFactory_$8975",
                                  "typeString": "contract APMRegistryFactory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "newDAO",
                              "referencedDeclaration": 9266,
                              "type": "function (address) external returns (contract Kernel)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8596,
                                  "type": "contract DAOFactory",
                                  "value": "daoFactory"
                                },
                                "id": 8694,
                                "name": "Identifier",
                                "src": "1651:10:36"
                              }
                            ],
                            "id": 8695,
                            "name": "MemberAccess",
                            "src": "1651:17:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12729,
                              "type": "contract APMRegistryFactory",
                              "value": "this"
                            },
                            "id": 8696,
                            "name": "Identifier",
                            "src": "1669:4:36"
                          }
                        ],
                        "id": 8697,
                        "name": "FunctionCall",
                        "src": "1651:23:36"
                      }
                    ],
                    "id": 8698,
                    "name": "VariableDeclarationStatement",
                    "src": "1638:36:36"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8700
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "acl",
                          "scope": 8930,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract ACL",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "ACL",
                              "referencedDeclaration": 5510,
                              "type": "contract ACL"
                            },
                            "id": 8699,
                            "name": "UserDefinedTypeName",
                            "src": "1684:3:36"
                          }
                        ],
                        "id": 8700,
                        "name": "VariableDeclaration",
                        "src": "1684:7:36"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract ACL",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IACL_$6001",
                                  "typeString": "contract IACL"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5510,
                              "type": "type(contract ACL)",
                              "value": "ACL"
                            },
                            "id": 8701,
                            "name": "Identifier",
                            "src": "1694:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract IACL",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "acl",
                                  "referencedDeclaration": 9724,
                                  "type": "function () view external returns (contract IACL)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8693,
                                      "type": "contract Kernel",
                                      "value": "dao"
                                    },
                                    "id": 8702,
                                    "name": "Identifier",
                                    "src": "1698:3:36"
                                  }
                                ],
                                "id": 8703,
                                "name": "MemberAccess",
                                "src": "1698:7:36"
                              }
                            ],
                            "id": 8704,
                            "name": "FunctionCall",
                            "src": "1698:9:36"
                          }
                        ],
                        "id": 8705,
                        "name": "FunctionCall",
                        "src": "1694:14:36"
                      }
                    ],
                    "id": 8706,
                    "name": "VariableDeclarationStatement",
                    "src": "1684:24:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_APMRegistryFactory_$8975",
                                  "typeString": "contract APMRegistryFactory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Kernel_$9891",
                                  "typeString": "contract Kernel"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_contract$_APMRegistryFactory_$8975",
                                  "typeString": "contract APMRegistryFactory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "createPermission",
                              "referencedDeclaration": 4583,
                              "type": "function (address,address,bytes32,address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8700,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 8707,
                                "name": "Identifier",
                                "src": "1719:3:36"
                              }
                            ],
                            "id": 8709,
                            "name": "MemberAccess",
                            "src": "1719:20:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12729,
                              "type": "contract APMRegistryFactory",
                              "value": "this"
                            },
                            "id": 8710,
                            "name": "Identifier",
                            "src": "1740:4:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8693,
                              "type": "contract Kernel",
                              "value": "dao"
                            },
                            "id": 8711,
                            "name": "Identifier",
                            "src": "1746:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "APP_MANAGER_ROLE",
                                  "referencedDeclaration": 9573,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8693,
                                      "type": "contract Kernel",
                                      "value": "dao"
                                    },
                                    "id": 8712,
                                    "name": "Identifier",
                                    "src": "1751:3:36"
                                  }
                                ],
                                "id": 8713,
                                "name": "MemberAccess",
                                "src": "1751:20:36"
                              }
                            ],
                            "id": 8714,
                            "name": "FunctionCall",
                            "src": "1751:22:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12729,
                              "type": "contract APMRegistryFactory",
                              "value": "this"
                            },
                            "id": 8715,
                            "name": "Identifier",
                            "src": "1775:4:36"
                          }
                        ],
                        "id": 8716,
                        "name": "FunctionCall",
                        "src": "1719:61:36"
                      }
                    ],
                    "id": 8717,
                    "name": "ExpressionStatement",
                    "src": "1719:61:36"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8719
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "namespace",
                          "scope": 8930,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 8718,
                            "name": "ElementaryTypeName",
                            "src": "1791:7:36"
                          }
                        ],
                        "id": 8719,
                        "name": "VariableDeclaration",
                        "src": "1791:17:36"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "APP_BASES_NAMESPACE",
                              "referencedDeclaration": 9939,
                              "type": "function () view external returns (bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8693,
                                  "type": "contract Kernel",
                                  "value": "dao"
                                },
                                "id": 8720,
                                "name": "Identifier",
                                "src": "1811:3:36"
                              }
                            ],
                            "id": 8721,
                            "name": "MemberAccess",
                            "src": "1811:23:36"
                          }
                        ],
                        "id": 8722,
                        "name": "FunctionCall",
                        "src": "1811:25:36"
                      }
                    ],
                    "id": 8723,
                    "name": "VariableDeclarationStatement",
                    "src": "1791:45:36"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8725
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "ensSub",
                          "scope": 8930,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract ENSSubdomainRegistrar",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "ENSSubdomainRegistrar",
                              "referencedDeclaration": 7583,
                              "type": "contract ENSSubdomainRegistrar"
                            },
                            "id": 8724,
                            "name": "UserDefinedTypeName",
                            "src": "1877:21:36"
                          }
                        ],
                        "id": 8725,
                        "name": "VariableDeclaration",
                        "src": "1877:28:36"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract ENSSubdomainRegistrar",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAppProxy_$6981",
                                  "typeString": "contract IAppProxy"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7583,
                              "type": "type(contract ENSSubdomainRegistrar)",
                              "value": "ENSSubdomainRegistrar"
                            },
                            "id": 8726,
                            "name": "Identifier",
                            "src": "1908:21:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract IAppProxy",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_ENSSubdomainRegistrar_$7583",
                                      "typeString": "contract ENSSubdomainRegistrar"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "newAppInstance",
                                  "referencedDeclaration": 9643,
                                  "type": "function (bytes32,address) external returns (contract IAppProxy)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8693,
                                      "type": "contract Kernel",
                                      "value": "dao"
                                    },
                                    "id": 8727,
                                    "name": "Identifier",
                                    "src": "1930:3:36"
                                  }
                                ],
                                "id": 8728,
                                "name": "MemberAccess",
                                "src": "1930:18:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12584,
                                      "type": "function () pure returns (bytes32)",
                                      "value": "keccak256"
                                    },
                                    "id": 8729,
                                    "name": "Identifier",
                                    "src": "1949:9:36"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8668,
                                      "type": "bytes32",
                                      "value": "node"
                                    },
                                    "id": 8730,
                                    "name": "Identifier",
                                    "src": "1959:4:36"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes32",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_memory",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12584,
                                          "type": "function () pure returns (bytes32)",
                                          "value": "keccak256"
                                        },
                                        "id": 8731,
                                        "name": "Identifier",
                                        "src": "1965:9:36"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6018,
                                          "type": "string memory",
                                          "value": "ENS_SUB_APP_NAME"
                                        },
                                        "id": 8732,
                                        "name": "Identifier",
                                        "src": "1975:16:36"
                                      }
                                    ],
                                    "id": 8733,
                                    "name": "FunctionCall",
                                    "src": "1965:27:36"
                                  }
                                ],
                                "id": 8734,
                                "name": "FunctionCall",
                                "src": "1949:44:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8602,
                                  "type": "contract ENSSubdomainRegistrar",
                                  "value": "ensSubdomainRegistrarBase"
                                },
                                "id": 8735,
                                "name": "Identifier",
                                "src": "1995:25:36"
                              }
                            ],
                            "id": 8736,
                            "name": "FunctionCall",
                            "src": "1930:91:36"
                          }
                        ],
                        "id": 8737,
                        "name": "FunctionCall",
                        "src": "1908:114:36"
                      }
                    ],
                    "id": 8738,
                    "name": "VariableDeclarationStatement",
                    "src": "1877:145:36"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8740
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "apm",
                          "scope": 8930,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract APMRegistry",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "APMRegistry",
                              "referencedDeclaration": 6279,
                              "type": "contract APMRegistry"
                            },
                            "id": 8739,
                            "name": "UserDefinedTypeName",
                            "src": "2032:11:36"
                          }
                        ],
                        "id": 8740,
                        "name": "VariableDeclaration",
                        "src": "2032:15:36"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract APMRegistry",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAppProxy_$6981",
                                  "typeString": "contract IAppProxy"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6279,
                              "type": "type(contract APMRegistry)",
                              "value": "APMRegistry"
                            },
                            "id": 8741,
                            "name": "Identifier",
                            "src": "2050:11:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract IAppProxy",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                      "typeString": "contract APMRegistry"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "newAppInstance",
                                  "referencedDeclaration": 9643,
                                  "type": "function (bytes32,address) external returns (contract IAppProxy)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8693,
                                      "type": "contract Kernel",
                                      "value": "dao"
                                    },
                                    "id": 8742,
                                    "name": "Identifier",
                                    "src": "2062:3:36"
                                  }
                                ],
                                "id": 8743,
                                "name": "MemberAccess",
                                "src": "2062:18:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12584,
                                      "type": "function () pure returns (bytes32)",
                                      "value": "keccak256"
                                    },
                                    "id": 8744,
                                    "name": "Identifier",
                                    "src": "2081:9:36"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8668,
                                      "type": "bytes32",
                                      "value": "node"
                                    },
                                    "id": 8745,
                                    "name": "Identifier",
                                    "src": "2091:4:36"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes32",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_memory",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12584,
                                          "type": "function () pure returns (bytes32)",
                                          "value": "keccak256"
                                        },
                                        "id": 8746,
                                        "name": "Identifier",
                                        "src": "2097:9:36"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6012,
                                          "type": "string memory",
                                          "value": "APM_APP_NAME"
                                        },
                                        "id": 8747,
                                        "name": "Identifier",
                                        "src": "2107:12:36"
                                      }
                                    ],
                                    "id": 8748,
                                    "name": "FunctionCall",
                                    "src": "2097:23:36"
                                  }
                                ],
                                "id": 8749,
                                "name": "FunctionCall",
                                "src": "2081:40:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8598,
                                  "type": "contract APMRegistry",
                                  "value": "registryBase"
                                },
                                "id": 8750,
                                "name": "Identifier",
                                "src": "2123:12:36"
                              }
                            ],
                            "id": 8751,
                            "name": "FunctionCall",
                            "src": "2062:74:36"
                          }
                        ],
                        "id": 8752,
                        "name": "FunctionCall",
                        "src": "2050:87:36"
                      }
                    ],
                    "id": 8753,
                    "name": "VariableDeclarationStatement",
                    "src": "2032:105:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setApp",
                              "referencedDeclaration": 9700,
                              "type": "function (bytes32,bytes32,address) external returns (bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8693,
                                  "type": "contract Kernel",
                                  "value": "dao"
                                },
                                "id": 8754,
                                "name": "Identifier",
                                "src": "2186:3:36"
                              }
                            ],
                            "id": 8756,
                            "name": "MemberAccess",
                            "src": "2186:10:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8719,
                              "type": "bytes32",
                              "value": "namespace"
                            },
                            "id": 8757,
                            "name": "Identifier",
                            "src": "2197:9:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12584,
                                  "type": "function () pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 8758,
                                "name": "Identifier",
                                "src": "2208:9:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8668,
                                  "type": "bytes32",
                                  "value": "node"
                                },
                                "id": 8759,
                                "name": "Identifier",
                                "src": "2218:4:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_string_memory",
                                          "typeString": "string memory"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12584,
                                      "type": "function () pure returns (bytes32)",
                                      "value": "keccak256"
                                    },
                                    "id": 8760,
                                    "name": "Identifier",
                                    "src": "2224:9:36"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6015,
                                      "type": "string memory",
                                      "value": "REPO_APP_NAME"
                                    },
                                    "id": 8761,
                                    "name": "Identifier",
                                    "src": "2234:13:36"
                                  }
                                ],
                                "id": 8762,
                                "name": "FunctionCall",
                                "src": "2224:24:36"
                              }
                            ],
                            "id": 8763,
                            "name": "FunctionCall",
                            "src": "2208:41:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8600,
                              "type": "contract Repo",
                              "value": "repoBase"
                            },
                            "id": 8764,
                            "name": "Identifier",
                            "src": "2251:8:36"
                          }
                        ],
                        "id": 8765,
                        "name": "FunctionCall",
                        "src": "2186:74:36"
                      }
                    ],
                    "id": 8766,
                    "name": "ExpressionStatement",
                    "src": "2186:74:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8610,
                              "type": "function (bytes32,address)",
                              "value": "DeployAPM"
                            },
                            "id": 8767,
                            "name": "Identifier",
                            "src": "2271:9:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8668,
                              "type": "bytes32",
                              "value": "node"
                            },
                            "id": 8768,
                            "name": "Identifier",
                            "src": "2281:4:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8740,
                              "type": "contract APMRegistry",
                              "value": "apm"
                            },
                            "id": 8769,
                            "name": "Identifier",
                            "src": "2287:3:36"
                          }
                        ],
                        "id": 8770,
                        "name": "FunctionCall",
                        "src": "2271:20:36"
                      }
                    ],
                    "id": 8771,
                    "name": "ExpressionStatement",
                    "src": "2271:20:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                },
                                {
                                  "typeIdentifier": "t_contract$_ENSSubdomainRegistrar_$7583",
                                  "typeString": "contract ENSSubdomainRegistrar"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "createPermission",
                              "referencedDeclaration": 4583,
                              "type": "function (address,address,bytes32,address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8700,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 8772,
                                "name": "Identifier",
                                "src": "2371:3:36"
                              }
                            ],
                            "id": 8774,
                            "name": "MemberAccess",
                            "src": "2371:20:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8740,
                              "type": "contract APMRegistry",
                              "value": "apm"
                            },
                            "id": 8775,
                            "name": "Identifier",
                            "src": "2392:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8725,
                              "type": "contract ENSSubdomainRegistrar",
                              "value": "ensSub"
                            },
                            "id": 8776,
                            "name": "Identifier",
                            "src": "2397:6:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_NAME_ROLE",
                                  "referencedDeclaration": 7306,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8725,
                                      "type": "contract ENSSubdomainRegistrar",
                                      "value": "ensSub"
                                    },
                                    "id": 8777,
                                    "name": "Identifier",
                                    "src": "2405:6:36"
                                  }
                                ],
                                "id": 8778,
                                "name": "MemberAccess",
                                "src": "2405:23:36"
                              }
                            ],
                            "id": 8779,
                            "name": "FunctionCall",
                            "src": "2405:25:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8662,
                              "type": "address",
                              "value": "_root"
                            },
                            "id": 8780,
                            "name": "Identifier",
                            "src": "2432:5:36"
                          }
                        ],
                        "id": 8781,
                        "name": "FunctionCall",
                        "src": "2371:67:36"
                      }
                    ],
                    "id": 8782,
                    "name": "ExpressionStatement",
                    "src": "2371:67:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                },
                                {
                                  "typeIdentifier": "t_contract$_ENSSubdomainRegistrar_$7583",
                                  "typeString": "contract ENSSubdomainRegistrar"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "createPermission",
                              "referencedDeclaration": 4583,
                              "type": "function (address,address,bytes32,address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8700,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 8783,
                                "name": "Identifier",
                                "src": "2448:3:36"
                              }
                            ],
                            "id": 8785,
                            "name": "MemberAccess",
                            "src": "2448:20:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8740,
                              "type": "contract APMRegistry",
                              "value": "apm"
                            },
                            "id": 8786,
                            "name": "Identifier",
                            "src": "2469:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8725,
                              "type": "contract ENSSubdomainRegistrar",
                              "value": "ensSub"
                            },
                            "id": 8787,
                            "name": "Identifier",
                            "src": "2474:6:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "POINT_ROOTNODE_ROLE",
                                  "referencedDeclaration": 7316,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8725,
                                      "type": "contract ENSSubdomainRegistrar",
                                      "value": "ensSub"
                                    },
                                    "id": 8788,
                                    "name": "Identifier",
                                    "src": "2482:6:36"
                                  }
                                ],
                                "id": 8789,
                                "name": "MemberAccess",
                                "src": "2482:26:36"
                              }
                            ],
                            "id": 8790,
                            "name": "FunctionCall",
                            "src": "2482:28:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8662,
                              "type": "address",
                              "value": "_root"
                            },
                            "id": 8791,
                            "name": "Identifier",
                            "src": "2512:5:36"
                          }
                        ],
                        "id": 8792,
                        "name": "FunctionCall",
                        "src": "2448:70:36"
                      }
                    ],
                    "id": 8793,
                    "name": "ExpressionStatement",
                    "src": "2448:70:36"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8795
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "permRole",
                          "scope": 8930,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 8794,
                            "name": "ElementaryTypeName",
                            "src": "2592:7:36"
                          }
                        ],
                        "id": 8795,
                        "name": "VariableDeclaration",
                        "src": "2592:16:36"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "CREATE_PERMISSIONS_ROLE",
                              "referencedDeclaration": 4425,
                              "type": "function () view external returns (bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8700,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 8796,
                                "name": "Identifier",
                                "src": "2611:3:36"
                              }
                            ],
                            "id": 8797,
                            "name": "MemberAccess",
                            "src": "2611:27:36"
                          }
                        ],
                        "id": 8798,
                        "name": "FunctionCall",
                        "src": "2611:29:36"
                      }
                    ],
                    "id": 8799,
                    "name": "VariableDeclarationStatement",
                    "src": "2592:48:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                },
                                {
                                  "typeIdentifier": "t_contract$_ACL_$5510",
                                  "typeString": "contract ACL"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "grantPermission",
                              "referencedDeclaration": 4604,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8700,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 8800,
                                "name": "Identifier",
                                "src": "2651:3:36"
                              }
                            ],
                            "id": 8802,
                            "name": "MemberAccess",
                            "src": "2651:19:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8740,
                              "type": "contract APMRegistry",
                              "value": "apm"
                            },
                            "id": 8803,
                            "name": "Identifier",
                            "src": "2671:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8700,
                              "type": "contract ACL",
                              "value": "acl"
                            },
                            "id": 8804,
                            "name": "Identifier",
                            "src": "2676:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8795,
                              "type": "bytes32",
                              "value": "permRole"
                            },
                            "id": 8805,
                            "name": "Identifier",
                            "src": "2681:8:36"
                          }
                        ],
                        "id": 8806,
                        "name": "FunctionCall",
                        "src": "2651:39:36"
                      }
                    ],
                    "id": 8807,
                    "name": "ExpressionStatement",
                    "src": "2651:39:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_contract$_ENSSubdomainRegistrar_$7583",
                                  "typeString": "contract ENSSubdomainRegistrar"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setOwner",
                              "referencedDeclaration": 10159,
                              "type": "function (bytes32,address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8604,
                                  "type": "contract ENS",
                                  "value": "ens"
                                },
                                "id": 8808,
                                "name": "Identifier",
                                "src": "2723:3:36"
                              }
                            ],
                            "id": 8810,
                            "name": "MemberAccess",
                            "src": "2723:12:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8668,
                              "type": "bytes32",
                              "value": "node"
                            },
                            "id": 8811,
                            "name": "Identifier",
                            "src": "2736:4:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8725,
                              "type": "contract ENSSubdomainRegistrar",
                              "value": "ensSub"
                            },
                            "id": 8812,
                            "name": "Identifier",
                            "src": "2742:6:36"
                          }
                        ],
                        "id": 8813,
                        "name": "FunctionCall",
                        "src": "2723:26:36"
                      }
                    ],
                    "id": 8814,
                    "name": "ExpressionStatement",
                    "src": "2723:26:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ENS_$10238",
                                  "typeString": "contract ENS"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "initialize",
                              "referencedDeclaration": 7364,
                              "type": "function (contract AbstractENS,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8725,
                                  "type": "contract ENSSubdomainRegistrar",
                                  "value": "ensSub"
                                },
                                "id": 8815,
                                "name": "Identifier",
                                "src": "2759:6:36"
                              }
                            ],
                            "id": 8817,
                            "name": "MemberAccess",
                            "src": "2759:17:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8604,
                              "type": "contract ENS",
                              "value": "ens"
                            },
                            "id": 8818,
                            "name": "Identifier",
                            "src": "2777:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8668,
                              "type": "bytes32",
                              "value": "node"
                            },
                            "id": 8819,
                            "name": "Identifier",
                            "src": "2782:4:36"
                          }
                        ],
                        "id": 8820,
                        "name": "FunctionCall",
                        "src": "2759:28:36"
                      }
                    ],
                    "id": 8821,
                    "name": "ExpressionStatement",
                    "src": "2759:28:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ENSSubdomainRegistrar_$7583",
                                  "typeString": "contract ENSSubdomainRegistrar"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "initialize",
                              "referencedDeclaration": 6099,
                              "type": "function (contract ENSSubdomainRegistrar) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8740,
                                  "type": "contract APMRegistry",
                                  "value": "apm"
                                },
                                "id": 8822,
                                "name": "Identifier",
                                "src": "2797:3:36"
                              }
                            ],
                            "id": 8824,
                            "name": "MemberAccess",
                            "src": "2797:14:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8725,
                              "type": "contract ENSSubdomainRegistrar",
                              "value": "ensSub"
                            },
                            "id": 8825,
                            "name": "Identifier",
                            "src": "2812:6:36"
                          }
                        ],
                        "id": 8826,
                        "name": "FunctionCall",
                        "src": "2797:22:36"
                      }
                    ],
                    "id": 8827,
                    "name": "ExpressionStatement",
                    "src": "2797:22:36"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "firstVersion",
                          "scope": 8930,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "uint16[3] memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "type": "uint16[3] storage pointer"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint16",
                                  "type": "uint16"
                                },
                                "id": 8830,
                                "name": "ElementaryTypeName",
                                "src": "2830:6:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "33",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 3",
                                  "value": "3"
                                },
                                "id": 8829,
                                "name": "Literal",
                                "src": "2837:1:36"
                              }
                            ],
                            "id": 8831,
                            "name": "ArrayTypeName",
                            "src": "2830:9:36"
                          }
                        ],
                        "id": 8832,
                        "name": "VariableDeclaration",
                        "src": "2830:29:36"
                      }
                    ],
                    "id": 8833,
                    "name": "VariableDeclarationStatement",
                    "src": "2830:29:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8832,
                                  "type": "uint16[3] memory",
                                  "value": "firstVersion"
                                },
                                "id": 8834,
                                "name": "Identifier",
                                "src": "2869:12:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 8835,
                                "name": "Literal",
                                "src": "2882:1:36"
                              }
                            ],
                            "id": 8836,
                            "name": "IndexAccess",
                            "src": "2869:15:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 8837,
                            "name": "Literal",
                            "src": "2887:1:36"
                          }
                        ],
                        "id": 8838,
                        "name": "Assignment",
                        "src": "2869:19:36"
                      }
                    ],
                    "id": 8839,
                    "name": "ExpressionStatement",
                    "src": "2869:19:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_APMRegistryFactory_$8975",
                                  "typeString": "contract APMRegistryFactory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_contract$_APMRegistryFactory_$8975",
                                  "typeString": "contract APMRegistryFactory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "createPermission",
                              "referencedDeclaration": 4583,
                              "type": "function (address,address,bytes32,address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8700,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 8840,
                                "name": "Identifier",
                                "src": "2899:3:36"
                              }
                            ],
                            "id": 8842,
                            "name": "MemberAccess",
                            "src": "2899:20:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12729,
                              "type": "contract APMRegistryFactory",
                              "value": "this"
                            },
                            "id": 8843,
                            "name": "Identifier",
                            "src": "2920:4:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8740,
                              "type": "contract APMRegistry",
                              "value": "apm"
                            },
                            "id": 8844,
                            "name": "Identifier",
                            "src": "2926:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_REPO_ROLE",
                                  "referencedDeclaration": 6034,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8740,
                                      "type": "contract APMRegistry",
                                      "value": "apm"
                                    },
                                    "id": 8845,
                                    "name": "Identifier",
                                    "src": "2931:3:36"
                                  }
                                ],
                                "id": 8846,
                                "name": "MemberAccess",
                                "src": "2931:20:36"
                              }
                            ],
                            "id": 8847,
                            "name": "FunctionCall",
                            "src": "2931:22:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12729,
                              "type": "contract APMRegistryFactory",
                              "value": "this"
                            },
                            "id": 8848,
                            "name": "Identifier",
                            "src": "2955:4:36"
                          }
                        ],
                        "id": 8849,
                        "name": "FunctionCall",
                        "src": "2899:61:36"
                      }
                    ],
                    "id": 8850,
                    "name": "ExpressionStatement",
                    "src": "2899:61:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Repo",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "newRepoWithVersion",
                              "referencedDeclaration": 6193,
                              "type": "function (string memory,address,uint16[3] memory,address,bytes memory) external returns (contract Repo)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8740,
                                  "type": "contract APMRegistry",
                                  "value": "apm"
                                },
                                "id": 8851,
                                "name": "Identifier",
                                "src": "2971:3:36"
                              }
                            ],
                            "id": 8853,
                            "name": "MemberAccess",
                            "src": "2971:22:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6012,
                              "type": "string memory",
                              "value": "APM_APP_NAME"
                            },
                            "id": 8854,
                            "name": "Identifier",
                            "src": "2994:12:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8662,
                              "type": "address",
                              "value": "_root"
                            },
                            "id": 8855,
                            "name": "Identifier",
                            "src": "3008:5:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8832,
                              "type": "uint16[3] memory",
                              "value": "firstVersion"
                            },
                            "id": 8856,
                            "name": "Identifier",
                            "src": "3015:12:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8598,
                              "type": "contract APMRegistry",
                              "value": "registryBase"
                            },
                            "id": 8857,
                            "name": "Identifier",
                            "src": "3029:12:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_bd519e9468823d7fd2951ca90a412c420218a9c6cae3c0013f571decac044ab0",
                                      "typeString": "literal_string \"ipfs:apm\""
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8944,
                                  "type": "function (string memory) pure returns (bytes memory)",
                                  "value": "b"
                                },
                                "id": 8858,
                                "name": "Identifier",
                                "src": "3043:1:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "697066733a61706d",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "string",
                                  "type": "literal_string \"ipfs:apm\"",
                                  "value": "ipfs:apm"
                                },
                                "id": 8859,
                                "name": "Literal",
                                "src": "3045:10:36"
                              }
                            ],
                            "id": 8860,
                            "name": "FunctionCall",
                            "src": "3043:13:36"
                          }
                        ],
                        "id": 8861,
                        "name": "FunctionCall",
                        "src": "2971:86:36"
                      }
                    ],
                    "id": 8862,
                    "name": "ExpressionStatement",
                    "src": "2971:86:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Repo",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_ENSSubdomainRegistrar_$7583",
                                  "typeString": "contract ENSSubdomainRegistrar"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "newRepoWithVersion",
                              "referencedDeclaration": 6193,
                              "type": "function (string memory,address,uint16[3] memory,address,bytes memory) external returns (contract Repo)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8740,
                                  "type": "contract APMRegistry",
                                  "value": "apm"
                                },
                                "id": 8863,
                                "name": "Identifier",
                                "src": "3067:3:36"
                              }
                            ],
                            "id": 8865,
                            "name": "MemberAccess",
                            "src": "3067:22:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6018,
                              "type": "string memory",
                              "value": "ENS_SUB_APP_NAME"
                            },
                            "id": 8866,
                            "name": "Identifier",
                            "src": "3090:16:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8662,
                              "type": "address",
                              "value": "_root"
                            },
                            "id": 8867,
                            "name": "Identifier",
                            "src": "3108:5:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8832,
                              "type": "uint16[3] memory",
                              "value": "firstVersion"
                            },
                            "id": 8868,
                            "name": "Identifier",
                            "src": "3115:12:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8602,
                              "type": "contract ENSSubdomainRegistrar",
                              "value": "ensSubdomainRegistrarBase"
                            },
                            "id": 8869,
                            "name": "Identifier",
                            "src": "3129:25:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_40e9f415690a155a4d25684a7502b118cee0b74bb8c46f947331f8e0ab927857",
                                      "typeString": "literal_string \"ipfs:enssub\""
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8944,
                                  "type": "function (string memory) pure returns (bytes memory)",
                                  "value": "b"
                                },
                                "id": 8870,
                                "name": "Identifier",
                                "src": "3156:1:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "697066733a656e73737562",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "string",
                                  "type": "literal_string \"ipfs:enssub\"",
                                  "value": "ipfs:enssub"
                                },
                                "id": 8871,
                                "name": "Literal",
                                "src": "3158:13:36"
                              }
                            ],
                            "id": 8872,
                            "name": "FunctionCall",
                            "src": "3156:16:36"
                          }
                        ],
                        "id": 8873,
                        "name": "FunctionCall",
                        "src": "3067:106:36"
                      }
                    ],
                    "id": 8874,
                    "name": "ExpressionStatement",
                    "src": "3067:106:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Repo",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "newRepoWithVersion",
                              "referencedDeclaration": 6193,
                              "type": "function (string memory,address,uint16[3] memory,address,bytes memory) external returns (contract Repo)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8740,
                                  "type": "contract APMRegistry",
                                  "value": "apm"
                                },
                                "id": 8875,
                                "name": "Identifier",
                                "src": "3183:3:36"
                              }
                            ],
                            "id": 8877,
                            "name": "MemberAccess",
                            "src": "3183:22:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6015,
                              "type": "string memory",
                              "value": "REPO_APP_NAME"
                            },
                            "id": 8878,
                            "name": "Identifier",
                            "src": "3206:13:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8662,
                              "type": "address",
                              "value": "_root"
                            },
                            "id": 8879,
                            "name": "Identifier",
                            "src": "3221:5:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8832,
                              "type": "uint16[3] memory",
                              "value": "firstVersion"
                            },
                            "id": 8880,
                            "name": "Identifier",
                            "src": "3228:12:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8600,
                              "type": "contract Repo",
                              "value": "repoBase"
                            },
                            "id": 8881,
                            "name": "Identifier",
                            "src": "3242:8:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_48cc521ec21e9d8c7d46de750cc52d64e5a87b969982c6994e87bd988c7ea604",
                                      "typeString": "literal_string \"ipfs:repo\""
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8944,
                                  "type": "function (string memory) pure returns (bytes memory)",
                                  "value": "b"
                                },
                                "id": 8882,
                                "name": "Identifier",
                                "src": "3252:1:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "697066733a7265706f",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "string",
                                  "type": "literal_string \"ipfs:repo\"",
                                  "value": "ipfs:repo"
                                },
                                "id": 8883,
                                "name": "Literal",
                                "src": "3254:11:36"
                              }
                            ],
                            "id": 8884,
                            "name": "FunctionCall",
                            "src": "3252:14:36"
                          }
                        ],
                        "id": 8885,
                        "name": "FunctionCall",
                        "src": "3183:84:36"
                      }
                    ],
                    "id": 8886,
                    "name": "ExpressionStatement",
                    "src": "3183:84:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ACL_$5510",
                                  "typeString": "contract ACL"
                                },
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8974,
                              "type": "function (contract ACL,contract APMRegistry,address)",
                              "value": "configureAPMPermissions"
                            },
                            "id": 8887,
                            "name": "Identifier",
                            "src": "3278:23:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8700,
                              "type": "contract ACL",
                              "value": "acl"
                            },
                            "id": 8888,
                            "name": "Identifier",
                            "src": "3302:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8740,
                              "type": "contract APMRegistry",
                              "value": "apm"
                            },
                            "id": 8889,
                            "name": "Identifier",
                            "src": "3307:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8662,
                              "type": "address",
                              "value": "_root"
                            },
                            "id": 8890,
                            "name": "Identifier",
                            "src": "3312:5:36"
                          }
                        ],
                        "id": 8891,
                        "name": "FunctionCall",
                        "src": "3278:40:36"
                      }
                    ],
                    "id": 8892,
                    "name": "ExpressionStatement",
                    "src": "3278:40:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Kernel_$9891",
                                  "typeString": "contract Kernel"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setPermissionManager",
                              "referencedDeclaration": 4700,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8700,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 8893,
                                "name": "Identifier",
                                "src": "3371:3:36"
                              }
                            ],
                            "id": 8895,
                            "name": "MemberAccess",
                            "src": "3371:24:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8662,
                              "type": "address",
                              "value": "_root"
                            },
                            "id": 8896,
                            "name": "Identifier",
                            "src": "3396:5:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8693,
                              "type": "contract Kernel",
                              "value": "dao"
                            },
                            "id": 8897,
                            "name": "Identifier",
                            "src": "3403:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "APP_MANAGER_ROLE",
                                  "referencedDeclaration": 9573,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8693,
                                      "type": "contract Kernel",
                                      "value": "dao"
                                    },
                                    "id": 8898,
                                    "name": "Identifier",
                                    "src": "3408:3:36"
                                  }
                                ],
                                "id": 8899,
                                "name": "MemberAccess",
                                "src": "3408:20:36"
                              }
                            ],
                            "id": 8900,
                            "name": "FunctionCall",
                            "src": "3408:22:36"
                          }
                        ],
                        "id": 8901,
                        "name": "FunctionCall",
                        "src": "3371:60:36"
                      }
                    ],
                    "id": 8902,
                    "name": "ExpressionStatement",
                    "src": "3371:60:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_APMRegistryFactory_$8975",
                                  "typeString": "contract APMRegistryFactory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_ACL_$5510",
                                  "typeString": "contract ACL"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "revokePermission",
                              "referencedDeclaration": 4680,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8700,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 8903,
                                "name": "Identifier",
                                "src": "3441:3:36"
                              }
                            ],
                            "id": 8905,
                            "name": "MemberAccess",
                            "src": "3441:20:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12729,
                              "type": "contract APMRegistryFactory",
                              "value": "this"
                            },
                            "id": 8906,
                            "name": "Identifier",
                            "src": "3462:4:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8700,
                              "type": "contract ACL",
                              "value": "acl"
                            },
                            "id": 8907,
                            "name": "Identifier",
                            "src": "3468:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8795,
                              "type": "bytes32",
                              "value": "permRole"
                            },
                            "id": 8908,
                            "name": "Identifier",
                            "src": "3473:8:36"
                          }
                        ],
                        "id": 8909,
                        "name": "FunctionCall",
                        "src": "3441:41:36"
                      }
                    ],
                    "id": 8910,
                    "name": "ExpressionStatement",
                    "src": "3441:41:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_ACL_$5510",
                                  "typeString": "contract ACL"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "grantPermission",
                              "referencedDeclaration": 4604,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8700,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 8911,
                                "name": "Identifier",
                                "src": "3492:3:36"
                              }
                            ],
                            "id": 8913,
                            "name": "MemberAccess",
                            "src": "3492:19:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8662,
                              "type": "address",
                              "value": "_root"
                            },
                            "id": 8914,
                            "name": "Identifier",
                            "src": "3512:5:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8700,
                              "type": "contract ACL",
                              "value": "acl"
                            },
                            "id": 8915,
                            "name": "Identifier",
                            "src": "3519:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8795,
                              "type": "bytes32",
                              "value": "permRole"
                            },
                            "id": 8916,
                            "name": "Identifier",
                            "src": "3524:8:36"
                          }
                        ],
                        "id": 8917,
                        "name": "FunctionCall",
                        "src": "3492:41:36"
                      }
                    ],
                    "id": 8918,
                    "name": "ExpressionStatement",
                    "src": "3492:41:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_ACL_$5510",
                                  "typeString": "contract ACL"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setPermissionManager",
                              "referencedDeclaration": 4700,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8700,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 8919,
                                "name": "Identifier",
                                "src": "3543:3:36"
                              }
                            ],
                            "id": 8921,
                            "name": "MemberAccess",
                            "src": "3543:24:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8662,
                              "type": "address",
                              "value": "_root"
                            },
                            "id": 8922,
                            "name": "Identifier",
                            "src": "3568:5:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8700,
                              "type": "contract ACL",
                              "value": "acl"
                            },
                            "id": 8923,
                            "name": "Identifier",
                            "src": "3575:3:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8795,
                              "type": "bytes32",
                              "value": "permRole"
                            },
                            "id": 8924,
                            "name": "Identifier",
                            "src": "3580:8:36"
                          }
                        ],
                        "id": 8925,
                        "name": "FunctionCall",
                        "src": "3543:46:36"
                      }
                    ],
                    "id": 8926,
                    "name": "ExpressionStatement",
                    "src": "3543:46:36"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 8666
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 8740,
                          "type": "contract APMRegistry",
                          "value": "apm"
                        },
                        "id": 8927,
                        "name": "Identifier",
                        "src": "3607:3:36"
                      }
                    ],
                    "id": 8928,
                    "name": "Return",
                    "src": "3600:10:36"
                  }
                ],
                "id": 8929,
                "name": "Block",
                "src": "1343:2274:36"
              }
            ],
            "id": 8930,
            "name": "FunctionDefinition",
            "src": "1253:2364:36"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "b",
              "payable": false,
              "scope": 8975,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "x",
                      "scope": 8944,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 8931,
                        "name": "ElementaryTypeName",
                        "src": "3634:6:36"
                      }
                    ],
                    "id": 8932,
                    "name": "VariableDeclaration",
                    "src": "3634:15:36"
                  }
                ],
                "id": 8933,
                "name": "ParameterList",
                "src": "3633:17:36"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "y",
                      "scope": 8944,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 8934,
                        "name": "ElementaryTypeName",
                        "src": "3674:5:36"
                      }
                    ],
                    "id": 8935,
                    "name": "VariableDeclaration",
                    "src": "3674:14:36"
                  }
                ],
                "id": 8936,
                "name": "ParameterList",
                "src": "3673:16:36"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8935,
                              "type": "bytes memory",
                              "value": "y"
                            },
                            "id": 8937,
                            "name": "Identifier",
                            "src": "3700:1:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes memory",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes storage pointer)",
                                  "value": "bytes"
                                },
                                "id": 8938,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3704:5:36"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8932,
                                  "type": "string memory",
                                  "value": "x"
                                },
                                "id": 8939,
                                "name": "Identifier",
                                "src": "3710:1:36"
                              }
                            ],
                            "id": 8940,
                            "name": "FunctionCall",
                            "src": "3704:8:36"
                          }
                        ],
                        "id": 8941,
                        "name": "Assignment",
                        "src": "3700:12:36"
                      }
                    ],
                    "id": 8942,
                    "name": "ExpressionStatement",
                    "src": "3700:12:36"
                  }
                ],
                "id": 8943,
                "name": "Block",
                "src": "3690:29:36"
              }
            ],
            "id": 8944,
            "name": "FunctionDefinition",
            "src": "3623:96:36"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "configureAPMPermissions",
              "payable": false,
              "scope": 8975,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_acl",
                      "scope": 8974,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract ACL",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "ACL",
                          "referencedDeclaration": 5510,
                          "type": "contract ACL"
                        },
                        "id": 8945,
                        "name": "UserDefinedTypeName",
                        "src": "3815:3:36"
                      }
                    ],
                    "id": 8946,
                    "name": "VariableDeclaration",
                    "src": "3815:8:36"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_apm",
                      "scope": 8974,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract APMRegistry",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "APMRegistry",
                          "referencedDeclaration": 6279,
                          "type": "contract APMRegistry"
                        },
                        "id": 8947,
                        "name": "UserDefinedTypeName",
                        "src": "3825:11:36"
                      }
                    ],
                    "id": 8948,
                    "name": "VariableDeclaration",
                    "src": "3825:16:36"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_root",
                      "scope": 8974,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 8949,
                        "name": "ElementaryTypeName",
                        "src": "3843:7:36"
                      }
                    ],
                    "id": 8950,
                    "name": "VariableDeclaration",
                    "src": "3843:13:36"
                  }
                ],
                "id": 8951,
                "name": "ParameterList",
                "src": "3814:43:36"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8952,
                "name": "ParameterList",
                "src": "3867:0:36"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "grantPermission",
                              "referencedDeclaration": 4604,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8946,
                                  "type": "contract ACL",
                                  "value": "_acl"
                                },
                                "id": 8953,
                                "name": "Identifier",
                                "src": "3877:4:36"
                              }
                            ],
                            "id": 8955,
                            "name": "MemberAccess",
                            "src": "3877:20:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8950,
                              "type": "address",
                              "value": "_root"
                            },
                            "id": 8956,
                            "name": "Identifier",
                            "src": "3898:5:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8948,
                              "type": "contract APMRegistry",
                              "value": "_apm"
                            },
                            "id": 8957,
                            "name": "Identifier",
                            "src": "3905:4:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_REPO_ROLE",
                                  "referencedDeclaration": 6034,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8948,
                                      "type": "contract APMRegistry",
                                      "value": "_apm"
                                    },
                                    "id": 8958,
                                    "name": "Identifier",
                                    "src": "3911:4:36"
                                  }
                                ],
                                "id": 8959,
                                "name": "MemberAccess",
                                "src": "3911:21:36"
                              }
                            ],
                            "id": 8960,
                            "name": "FunctionCall",
                            "src": "3911:23:36"
                          }
                        ],
                        "id": 8961,
                        "name": "FunctionCall",
                        "src": "3877:58:36"
                      }
                    ],
                    "id": 8962,
                    "name": "ExpressionStatement",
                    "src": "3877:58:36"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setPermissionManager",
                              "referencedDeclaration": 4700,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8946,
                                  "type": "contract ACL",
                                  "value": "_acl"
                                },
                                "id": 8963,
                                "name": "Identifier",
                                "src": "3945:4:36"
                              }
                            ],
                            "id": 8965,
                            "name": "MemberAccess",
                            "src": "3945:25:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8950,
                              "type": "address",
                              "value": "_root"
                            },
                            "id": 8966,
                            "name": "Identifier",
                            "src": "3971:5:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8948,
                              "type": "contract APMRegistry",
                              "value": "_apm"
                            },
                            "id": 8967,
                            "name": "Identifier",
                            "src": "3978:4:36"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_REPO_ROLE",
                                  "referencedDeclaration": 6034,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8948,
                                      "type": "contract APMRegistry",
                                      "value": "_apm"
                                    },
                                    "id": 8968,
                                    "name": "Identifier",
                                    "src": "3984:4:36"
                                  }
                                ],
                                "id": 8969,
                                "name": "MemberAccess",
                                "src": "3984:21:36"
                              }
                            ],
                            "id": 8970,
                            "name": "FunctionCall",
                            "src": "3984:23:36"
                          }
                        ],
                        "id": 8971,
                        "name": "FunctionCall",
                        "src": "3945:63:36"
                      }
                    ],
                    "id": 8972,
                    "name": "ExpressionStatement",
                    "src": "3945:63:36"
                  }
                ],
                "id": 8973,
                "name": "Block",
                "src": "3867:148:36"
              }
            ],
            "id": 8974,
            "name": "FunctionDefinition",
            "src": "3782:233:36"
          }
        ],
        "id": 8975,
        "name": "ContractDefinition",
        "src": "191:3826:36"
      }
    ],
    "id": 8976,
    "name": "SourceUnit",
    "src": "0:4018:36"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.094Z"
}