{
  "contractName": "DummySTOFactory",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "monthlySubscriptionCost",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newSubscriptionCost",
          "type": "uint256"
        }
      ],
      "name": "changeFactorySubscriptionFee",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newSetupCost",
          "type": "uint256"
        }
      ],
      "name": "changeFactorySetupFee",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "polyToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "setupCost",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newUsageCost",
          "type": "uint256"
        }
      ],
      "name": "changeFactoryUsageFee",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "usageCost",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_polyAddress",
          "type": "address"
        },
        {
          "name": "_setupCost",
          "type": "uint256"
        },
        {
          "name": "_usageCost",
          "type": "uint256"
        },
        {
          "name": "_subscriptionCost",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_oldSetupcost",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_newSetupCost",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_moduleFactory",
          "type": "address"
        }
      ],
      "name": "LogChangeFactorySetupFee",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_oldUsageCost",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_newUsageCost",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_moduleFactory",
          "type": "address"
        }
      ],
      "name": "LogChangeFactoryUsageFee",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_oldSubscriptionCost",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_newMonthlySubscriptionCost",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_moduleFactory",
          "type": "address"
        }
      ],
      "name": "LogChangeFactorySubscriptionFee",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_module",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_moduleName",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_moduleFactory",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_creator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "LogGenerateModuleFromFactory",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "deploy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getType",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getName",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getDescription",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getTitle",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInstructions",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getTags",
      "outputs": [
        {
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405160808061223f833981016040908152815160208301519183015160609093015160008054600160a060020a0319908116331790915560018054600160a060020a0390941693909116929092179091556002919091556003919091556004556121be806100816000396000f3006080604052600436106100d65763ffffffff60e060020a60003504166277436081146100db57806306184a251461011757806315dae03e1461013e57806317d7de7c146101695780631a0925411461017e5780633ae192bd1461020857806358a191c3146102225780636faa22a51461023a578063715018a61461024f5780637e363ffa146102645780638da5cb5b14610279578063995d9ab71461028e578063aac67b05146102f3578063d54c47261461030b578063e0d5497014610320578063f2fde38b14610335578063ff3c1a8f1461017e575b600080fd5b3480156100e757600080fd5b506100fb6004803560248101910135610356565b60408051600160a060020a039092168252519081900360200190f35b34801561012357600080fd5b5061012c610756565b60408051918252519081900360200190f35b34801561014a57600080fd5b5061015361075c565b6040805160ff9092168252519081900360200190f35b34801561017557600080fd5b5061012c610761565b34801561018a57600080fd5b50610193610785565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101cd5781810151838201526020016101b5565b50505050905090810190601f1680156101fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021457600080fd5b506102206004356107bc565b005b34801561022e57600080fd5b50610220600435610819565b34801561024657600080fd5b506100fb610876565b34801561025b57600080fd5b50610220610885565b34801561027057600080fd5b5061012c6108f1565b34801561028557600080fd5b506100fb6108f7565b34801561029a57600080fd5b506102a3610906565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102df5781810151838201526020016102c7565b505050509050019250505060405180910390f35b3480156102ff57600080fd5b506102206004356109e1565b34801561031757600080fd5b5061012c610a3e565b34801561032c57600080fd5b50610193610a44565b34801561034157600080fd5b50610220600160a060020a0360043516610aa3565b600080600060025411156104c85760015460008054600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a03938416602482015260448101929092525191909316926323b872dd9260648083019360209390929083900390910190829087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b505050506040513d602081101561040d57600080fd5b505115156104c857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f4661696c6564207472616e7366657246726f6d2062656361757365206f66207360448201527f7566666963656e7420416c6c6f77616e6365206973206e6f742070726f76696460648201527f6564000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b6001543390600160a060020a03166104de610bc4565b600160a060020a03928316815291166020820152604080519182900301906000f080158015610511573d6000803e3d6000fd5b50905080600160a060020a0316631613ec9d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561055257600080fd5b505af1158015610566573d6000803e3d6000fd5b505050506040513d602081101561057c57600080fd5b5051604080516020601f87018190048102820181019092528581527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19909216916105d791879087908190840183828082843750610ac6945050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461066257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f76696465642064617461206973206e6f742076616c6964000000000000604482015290519081900360640190fd5b80600160a060020a03168484604051808383808284378201915050925050506000604051808303816000865af191505015156106ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e2d7375636365737366756c6c2063616c6c00000000000000000000000000604482015290519081900360640190fd5b30610708610761565b60408051600160a060020a0385168152336020820152428183015290517f1b81ebef84f1d2411caa47894fb587822eff7c2a8a3580a2d52ce516f840c8219181900360600190a39392505050565b60045481565b600390565b7f44756d6d7953544f00000000000000000000000000000000000000000000000090565b60408051808201909152600981527f44756d6d792053544f0000000000000000000000000000000000000000000000602082015290565b600054600160a060020a031633146107d357600080fd5b60045460408051918252602082018390523082820152517fc15ef5ae01a170635c048bc2ddb0e834fe5d866424709f0a7398496a80852ec89181900360600190a1600455565b600054600160a060020a0316331461083057600080fd5b60025460408051918252602082018390523082820152517ff9c53ed8f7f318ac63991d13acab4cf653984ce56b7dc1b3a2083af3f412262d9181900360600190a1600255565b600154600160a060020a031681565b600054600160a060020a0316331461089c57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60025481565b600054600160a060020a031681565b60408051600480825260a08201909252606091829190602082016080803883390190505090507f44756d6d7900000000000000000000000000000000000000000000000000000081600081518110151561095c57fe5b6020908102909101015280517f4e6f6e2d726566756e6461626c65000000000000000000000000000000000000908290600190811061099757fe5b6020908102909101015280517f455448000000000000000000000000000000000000000000000000000000000090829060029081106109d257fe5b60209081029091010152905090565b600054600160a060020a031633146109f857600080fd5b60035460408051918252602082018390523082820152517fff5bf6a8d25c4e30ad5778be1e2a41c7c45173313279bcbba6e2bb1b1bf7a6db9181900360600190a1600355565b60035481565b60408051606081018252602781527f44756d6d792053544f202d20796f752063616e206d696e7420746f6b656e732060208201527f61742077696c6c000000000000000000000000000000000000000000000000009181019190915290565b600054600160a060020a03163314610aba57600080fd5b610ac381610b47565b50565b60008060006004845110610adb576004610ade565b83515b9150600090505b81811015610b405780600183030360080260020a8482815181101515610b0757fe5b90602001015160f860020a900460f860020a0260f860020a9004028360e060020a90040160e060020a0292508080600101915050610ae5565b5050919050565b600160a060020a0381161515610b5c57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6040516115be80610bd583390190560060806040526002805460a060020a60ff021916905534801561002057600080fd5b506040516040806115be83398101604052805160209091015160018054600160a060020a03938416600160a060020a031991821617909155600080548216331790556002805493909216921691909117905561153d806100816000396000f3006080604052600436106101455763ffffffff60e060020a6000350416631613ec9d811461014a5780632a0acc6a146101945780633197cbb6146101bb578063355274ea146101d057806335ff3a51146101e557806338c59de9146101fa5780633f4ba83a1461020f5780635c975abb146102265780635f7619a41461024f5780636f7bc9be146102675780636faa22a51461028857806378e97925146102b9578063827f32c0146102ce5780638456cb59146102f25780638905fd4f146103075780638b31007914610328578063a3fb8f15146101e5578063a412f87c1461038b578063b2cca39d146103af578063b84dfbd2146103c4578063c3a07df6146103d9578063c45a01551461043e578063d70afa9614610453578063d7e64c0014610468578063e7a96f6d1461047d578063eda524bc14610507578063ee7c0db0146101e5575b600080fd5b34801561015657600080fd5b5061015f610522565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b3480156101a057600080fd5b506101a961057e565b60408051918252519081900360200190f35b3480156101c757600080fd5b506101a96105a2565b3480156101dc57600080fd5b506101a96105a8565b3480156101f157600080fd5b506101a96105ae565b34801561020657600080fd5b506101a96105b3565b34801561021b57600080fd5b506102246105b9565b005b34801561023257600080fd5b5061023b6106a1565b604080519115158252519081900360200190f35b34801561025b57600080fd5b5061023b6004356106b1565b34801561027357600080fd5b506101a9600160a060020a03600435166109f0565b34801561029457600080fd5b5061029d610a02565b60408051600160a060020a039092168252519081900360200190f35b3480156102c557600080fd5b506101a9610a11565b3480156102da57600080fd5b50610224600160a060020a0360043516602435610a17565b3480156102fe57600080fd5b50610224610d69565b34801561031357600080fd5b50610224600160a060020a0360043516610e5d565b34801561033457600080fd5b50604080516020601f606435600481810135928301849004840285018401909552818452610224948035946024803595604435953695608494930191819084018382808284375094975061108b9650505050505050565b34801561039757600080fd5b5061023b600160a060020a0360043516602435611116565b3480156103bb57600080fd5b506101a96111ba565b3480156103d057600080fd5b5061029d6111c0565b3480156103e557600080fd5b506103ee6111cf565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561042a578181015183820152602001610412565b505050509050019250505060405180910390f35b34801561044a57600080fd5b5061029d611236565b34801561045f57600080fd5b506101a9611245565b34801561047457600080fd5b506101a9611269565b34801561048957600080fd5b5061049261126f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104cc5781810151838201526020016104b4565b50505050905090810190601f1680156104f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561051357600080fd5b5061023b60ff600435166112fd565b604080517f636f6e6669677572652875696e743235362c75696e743235362c75696e74323581527f362c737472696e67290000000000000000000000000000000000000000000000602082015290519081900360290190205b90565b7f41444d494e00000000000000000000000000000000000000000000000000000081565b60055481565b60085481565b600090565b60075490565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561060c57600080fd5b505af1158015610620573d6000803e3d6000fd5b505050506040513d602081101561063657600080fd5b5051600160a060020a03163314610697576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b61069f611312565b565b60025460a060020a900460ff1681565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561072a57600080fd5b505af115801561073e573d6000803e3d6000fd5b505050506040513d602081101561075457600080fd5b505160005433600160a060020a0392831681149450911614905081806107775750805b8061081d5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b1580156107f057600080fd5b505af1158015610804573d6000803e3d6000fd5b505050506040513d602081101561081a57600080fd5b50515b1515610873576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050506040513d602081101561090c57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b15801561096357600080fd5b505af1158015610977573d6000803e3d6000fd5b505050506040513d602081101561098d57600080fd5b505115156109e5576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b600a6020526000908152604090205481565b600254600160a060020a031681565b60045481565b7f41444d494e000000000000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b505050506040513d6020811015610ab857600080fd5b505160005433600160a060020a039283168114945091161490508180610adb5750805b80610b815750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610b5457600080fd5b505af1158015610b68573d6000803e3d6000fd5b505050506040513d6020811015610b7e57600080fd5b50515b1515610bd7576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60025460a060020a900460ff1615610bee57600080fd5b60008411610c46576040805160e560020a62461bcd02815260206004820152601f60248201527f416d6f756e742073686f756c642062652067726561746572207468616e203000604482015290519081900360640190fd5b600154604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015260248201889052915191909216916340c10f199160448083019260209291908290030181600087803b158015610cb557600080fd5b505af1158015610cc9573d6000803e3d6000fd5b505050506040513d6020811015610cdf57600080fd5b5050600160a060020a0385166000908152600a60205260409020541515610d0a576007805460010190555b600160a060020a0385166000818152600a60209081526040918290208054880190558151928352820186905280517f1de621a3656e198085de9765650db7426a90c14ebced44f84f9a8c5d4660d6f49281900390910190a15050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610dbc57600080fd5b505af1158015610dd0573d6000803e3d6000fd5b505050506040513d6020811015610de657600080fd5b5051600160a060020a03163314610e47576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b6005544210610e5557600080fd5b61069f6113c8565b600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610eb357600080fd5b505af1158015610ec7573d6000803e3d6000fd5b505050506040513d6020811015610edd57600080fd5b5051600160a060020a03163314610f3e576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b600160a060020a0383161515610f5357600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610fb757600080fd5b505af1158015610fcb573d6000803e3d6000fd5b505050506040513d6020811015610fe157600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051919250600160a060020a0384169163a9059cbb916044808201926020929091908290030181600087803b15801561104f57600080fd5b505af1158015611063573d6000803e3d6000fd5b505050506040513d602081101561107957600080fd5b5051151561108657600080fd5b505050565b600054600160a060020a031633146110ed576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206973206e6f7420666163746f72790000000000000000000000604482015290519081900360640190fd5b600484905560058390556008829055805161110f906009906020840190611483565b5050505050565b600254604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015230602483015291516000938593169163dd62ed3e91604480830192602092919082900301818887803b15801561118557600080fd5b505af1158015611199573d6000803e3d6000fd5b505050506040513d60208110156111af57600080fd5b505110159392505050565b60065481565b600154600160a060020a031681565b604080516001808252818301909252606091829190602080830190803883390190505090507f41444d494e00000000000000000000000000000000000000000000000000000081600081518110151561122457fe5b602090810290910101529050805b5090565b600054600160a060020a031681565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b60075481565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112f55780601f106112ca576101008083540402835291602001916112f5565b820191906000526020600020905b8154815290600101906020018083116112d857829003601f168201915b505050505081565b60036020526000908152604090205460ff1681565b60025460a060020a900460ff161515611375576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60025460a060020a900460ff161561142a576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106114c457805160ff19168380011785556114f1565b828001600101855582156114f1579182015b828111156114f15782518255916020019190600101906114d6565b506112329261057b9250905b8082111561123257600081556001016114fd5600a165627a7a72305820446977792f09b84a23c0c324373d218355e34a1fd38e5c1ca13d13c91b9265250029a165627a7a723058209b8a095f973b468cb3ec47d90187c91c4895c2fb7bca7839575794ad510004bb0029",
  "deployedBytecode": "0x6080604052600436106100d65763ffffffff60e060020a60003504166277436081146100db57806306184a251461011757806315dae03e1461013e57806317d7de7c146101695780631a0925411461017e5780633ae192bd1461020857806358a191c3146102225780636faa22a51461023a578063715018a61461024f5780637e363ffa146102645780638da5cb5b14610279578063995d9ab71461028e578063aac67b05146102f3578063d54c47261461030b578063e0d5497014610320578063f2fde38b14610335578063ff3c1a8f1461017e575b600080fd5b3480156100e757600080fd5b506100fb6004803560248101910135610356565b60408051600160a060020a039092168252519081900360200190f35b34801561012357600080fd5b5061012c610756565b60408051918252519081900360200190f35b34801561014a57600080fd5b5061015361075c565b6040805160ff9092168252519081900360200190f35b34801561017557600080fd5b5061012c610761565b34801561018a57600080fd5b50610193610785565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101cd5781810151838201526020016101b5565b50505050905090810190601f1680156101fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021457600080fd5b506102206004356107bc565b005b34801561022e57600080fd5b50610220600435610819565b34801561024657600080fd5b506100fb610876565b34801561025b57600080fd5b50610220610885565b34801561027057600080fd5b5061012c6108f1565b34801561028557600080fd5b506100fb6108f7565b34801561029a57600080fd5b506102a3610906565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102df5781810151838201526020016102c7565b505050509050019250505060405180910390f35b3480156102ff57600080fd5b506102206004356109e1565b34801561031757600080fd5b5061012c610a3e565b34801561032c57600080fd5b50610193610a44565b34801561034157600080fd5b50610220600160a060020a0360043516610aa3565b600080600060025411156104c85760015460008054600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a03938416602482015260448101929092525191909316926323b872dd9260648083019360209390929083900390910190829087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b505050506040513d602081101561040d57600080fd5b505115156104c857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f4661696c6564207472616e7366657246726f6d2062656361757365206f66207360448201527f7566666963656e7420416c6c6f77616e6365206973206e6f742070726f76696460648201527f6564000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b6001543390600160a060020a03166104de610bc4565b600160a060020a03928316815291166020820152604080519182900301906000f080158015610511573d6000803e3d6000fd5b50905080600160a060020a0316631613ec9d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561055257600080fd5b505af1158015610566573d6000803e3d6000fd5b505050506040513d602081101561057c57600080fd5b5051604080516020601f87018190048102820181019092528581527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19909216916105d791879087908190840183828082843750610ac6945050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461066257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f76696465642064617461206973206e6f742076616c6964000000000000604482015290519081900360640190fd5b80600160a060020a03168484604051808383808284378201915050925050506000604051808303816000865af191505015156106ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e2d7375636365737366756c6c2063616c6c00000000000000000000000000604482015290519081900360640190fd5b30610708610761565b60408051600160a060020a0385168152336020820152428183015290517f1b81ebef84f1d2411caa47894fb587822eff7c2a8a3580a2d52ce516f840c8219181900360600190a39392505050565b60045481565b600390565b7f44756d6d7953544f00000000000000000000000000000000000000000000000090565b60408051808201909152600981527f44756d6d792053544f0000000000000000000000000000000000000000000000602082015290565b600054600160a060020a031633146107d357600080fd5b60045460408051918252602082018390523082820152517fc15ef5ae01a170635c048bc2ddb0e834fe5d866424709f0a7398496a80852ec89181900360600190a1600455565b600054600160a060020a0316331461083057600080fd5b60025460408051918252602082018390523082820152517ff9c53ed8f7f318ac63991d13acab4cf653984ce56b7dc1b3a2083af3f412262d9181900360600190a1600255565b600154600160a060020a031681565b600054600160a060020a0316331461089c57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60025481565b600054600160a060020a031681565b60408051600480825260a08201909252606091829190602082016080803883390190505090507f44756d6d7900000000000000000000000000000000000000000000000000000081600081518110151561095c57fe5b6020908102909101015280517f4e6f6e2d726566756e6461626c65000000000000000000000000000000000000908290600190811061099757fe5b6020908102909101015280517f455448000000000000000000000000000000000000000000000000000000000090829060029081106109d257fe5b60209081029091010152905090565b600054600160a060020a031633146109f857600080fd5b60035460408051918252602082018390523082820152517fff5bf6a8d25c4e30ad5778be1e2a41c7c45173313279bcbba6e2bb1b1bf7a6db9181900360600190a1600355565b60035481565b60408051606081018252602781527f44756d6d792053544f202d20796f752063616e206d696e7420746f6b656e732060208201527f61742077696c6c000000000000000000000000000000000000000000000000009181019190915290565b600054600160a060020a03163314610aba57600080fd5b610ac381610b47565b50565b60008060006004845110610adb576004610ade565b83515b9150600090505b81811015610b405780600183030360080260020a8482815181101515610b0757fe5b90602001015160f860020a900460f860020a0260f860020a9004028360e060020a90040160e060020a0292508080600101915050610ae5565b5050919050565b600160a060020a0381161515610b5c57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6040516115be80610bd583390190560060806040526002805460a060020a60ff021916905534801561002057600080fd5b506040516040806115be83398101604052805160209091015160018054600160a060020a03938416600160a060020a031991821617909155600080548216331790556002805493909216921691909117905561153d806100816000396000f3006080604052600436106101455763ffffffff60e060020a6000350416631613ec9d811461014a5780632a0acc6a146101945780633197cbb6146101bb578063355274ea146101d057806335ff3a51146101e557806338c59de9146101fa5780633f4ba83a1461020f5780635c975abb146102265780635f7619a41461024f5780636f7bc9be146102675780636faa22a51461028857806378e97925146102b9578063827f32c0146102ce5780638456cb59146102f25780638905fd4f146103075780638b31007914610328578063a3fb8f15146101e5578063a412f87c1461038b578063b2cca39d146103af578063b84dfbd2146103c4578063c3a07df6146103d9578063c45a01551461043e578063d70afa9614610453578063d7e64c0014610468578063e7a96f6d1461047d578063eda524bc14610507578063ee7c0db0146101e5575b600080fd5b34801561015657600080fd5b5061015f610522565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b3480156101a057600080fd5b506101a961057e565b60408051918252519081900360200190f35b3480156101c757600080fd5b506101a96105a2565b3480156101dc57600080fd5b506101a96105a8565b3480156101f157600080fd5b506101a96105ae565b34801561020657600080fd5b506101a96105b3565b34801561021b57600080fd5b506102246105b9565b005b34801561023257600080fd5b5061023b6106a1565b604080519115158252519081900360200190f35b34801561025b57600080fd5b5061023b6004356106b1565b34801561027357600080fd5b506101a9600160a060020a03600435166109f0565b34801561029457600080fd5b5061029d610a02565b60408051600160a060020a039092168252519081900360200190f35b3480156102c557600080fd5b506101a9610a11565b3480156102da57600080fd5b50610224600160a060020a0360043516602435610a17565b3480156102fe57600080fd5b50610224610d69565b34801561031357600080fd5b50610224600160a060020a0360043516610e5d565b34801561033457600080fd5b50604080516020601f606435600481810135928301849004840285018401909552818452610224948035946024803595604435953695608494930191819084018382808284375094975061108b9650505050505050565b34801561039757600080fd5b5061023b600160a060020a0360043516602435611116565b3480156103bb57600080fd5b506101a96111ba565b3480156103d057600080fd5b5061029d6111c0565b3480156103e557600080fd5b506103ee6111cf565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561042a578181015183820152602001610412565b505050509050019250505060405180910390f35b34801561044a57600080fd5b5061029d611236565b34801561045f57600080fd5b506101a9611245565b34801561047457600080fd5b506101a9611269565b34801561048957600080fd5b5061049261126f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104cc5781810151838201526020016104b4565b50505050905090810190601f1680156104f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561051357600080fd5b5061023b60ff600435166112fd565b604080517f636f6e6669677572652875696e743235362c75696e743235362c75696e74323581527f362c737472696e67290000000000000000000000000000000000000000000000602082015290519081900360290190205b90565b7f41444d494e00000000000000000000000000000000000000000000000000000081565b60055481565b60085481565b600090565b60075490565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561060c57600080fd5b505af1158015610620573d6000803e3d6000fd5b505050506040513d602081101561063657600080fd5b5051600160a060020a03163314610697576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b61069f611312565b565b60025460a060020a900460ff1681565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561072a57600080fd5b505af115801561073e573d6000803e3d6000fd5b505050506040513d602081101561075457600080fd5b505160005433600160a060020a0392831681149450911614905081806107775750805b8061081d5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b1580156107f057600080fd5b505af1158015610804573d6000803e3d6000fd5b505050506040513d602081101561081a57600080fd5b50515b1515610873576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050506040513d602081101561090c57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b15801561096357600080fd5b505af1158015610977573d6000803e3d6000fd5b505050506040513d602081101561098d57600080fd5b505115156109e5576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b600a6020526000908152604090205481565b600254600160a060020a031681565b60045481565b7f41444d494e000000000000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b505050506040513d6020811015610ab857600080fd5b505160005433600160a060020a039283168114945091161490508180610adb5750805b80610b815750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610b5457600080fd5b505af1158015610b68573d6000803e3d6000fd5b505050506040513d6020811015610b7e57600080fd5b50515b1515610bd7576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60025460a060020a900460ff1615610bee57600080fd5b60008411610c46576040805160e560020a62461bcd02815260206004820152601f60248201527f416d6f756e742073686f756c642062652067726561746572207468616e203000604482015290519081900360640190fd5b600154604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015260248201889052915191909216916340c10f199160448083019260209291908290030181600087803b158015610cb557600080fd5b505af1158015610cc9573d6000803e3d6000fd5b505050506040513d6020811015610cdf57600080fd5b5050600160a060020a0385166000908152600a60205260409020541515610d0a576007805460010190555b600160a060020a0385166000818152600a60209081526040918290208054880190558151928352820186905280517f1de621a3656e198085de9765650db7426a90c14ebced44f84f9a8c5d4660d6f49281900390910190a15050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610dbc57600080fd5b505af1158015610dd0573d6000803e3d6000fd5b505050506040513d6020811015610de657600080fd5b5051600160a060020a03163314610e47576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b6005544210610e5557600080fd5b61069f6113c8565b600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610eb357600080fd5b505af1158015610ec7573d6000803e3d6000fd5b505050506040513d6020811015610edd57600080fd5b5051600160a060020a03163314610f3e576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b600160a060020a0383161515610f5357600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610fb757600080fd5b505af1158015610fcb573d6000803e3d6000fd5b505050506040513d6020811015610fe157600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051919250600160a060020a0384169163a9059cbb916044808201926020929091908290030181600087803b15801561104f57600080fd5b505af1158015611063573d6000803e3d6000fd5b505050506040513d602081101561107957600080fd5b5051151561108657600080fd5b505050565b600054600160a060020a031633146110ed576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206973206e6f7420666163746f72790000000000000000000000604482015290519081900360640190fd5b600484905560058390556008829055805161110f906009906020840190611483565b5050505050565b600254604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015230602483015291516000938593169163dd62ed3e91604480830192602092919082900301818887803b15801561118557600080fd5b505af1158015611199573d6000803e3d6000fd5b505050506040513d60208110156111af57600080fd5b505110159392505050565b60065481565b600154600160a060020a031681565b604080516001808252818301909252606091829190602080830190803883390190505090507f41444d494e00000000000000000000000000000000000000000000000000000081600081518110151561122457fe5b602090810290910101529050805b5090565b600054600160a060020a031681565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b60075481565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112f55780601f106112ca576101008083540402835291602001916112f5565b820191906000526020600020905b8154815290600101906020018083116112d857829003601f168201915b505050505081565b60036020526000908152604090205460ff1681565b60025460a060020a900460ff161515611375576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60025460a060020a900460ff161561142a576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106114c457805160ff19168380011785556114f1565b828001600101855582156114f1579182015b828111156114f15782518255916020019190600101906114d6565b506112329261057b9250905b8082111561123257600081556001016114fd5600a165627a7a72305820446977792f09b84a23c0c324373d218355e34a1fd38e5c1ca13d13c91b9265250029a165627a7a723058209b8a095f973b468cb3ec47d90187c91c4895c2fb7bca7839575794ad510004bb0029",
  "sourceMap": "193:2374:40:-;;;338:199;8:9:-1;5:2;;;30:1;27;20:12;5:2;338:199:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;567:5:64;:18;;-1:-1:-1;;;;;;567:18:64;;;575:10;567:18;;;;;1123:31:14;;-1:-1:-1;;;;;1123:31:14;;;;;;;;;;;;;;1162:9;:22;;;;1192:9;:22;;;;1222:23;:43;193:2374:40;;;;;;",
  "deployedSourceMap": "193:2374:40:-;;;;;;;;;-1:-1:-1;;;193:2374:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:748;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;678:748:40;;;;;;;;;;;;;;;;-1:-1:-1;;;;;678:748:40;;;;;;;;;;;;;;363:38:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;363:38:14;;;;;;;;;;;;;;;;;;;;1490:71:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1490:71:40;;;;;;;;;;;;;;;;;;;;;;;1625:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1625:82:40;;;;1778:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1778:89:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1778:89:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3197:265:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3197:265:14;;;;;;;2548:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2548:193:14;;;;;275:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;275:22:14;;;;827:111:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:111:64;;;;303:24:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:24:14;;;;238:20:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:64;;;;2304:261:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2304:261:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2304:261:40;;;;;;;;;;;;;;;;;2862:193:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2862:193:14;;;;;333:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;333:24:14;;;;2104:120:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2104:120:40;;;;1100:103:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1100:103:64;-1:-1:-1;;;;;1100:103:64;;;;;678:748:40;724:7;980:17;759:1;747:9;;:13;743:162;;;782:9;;;817:5;;824:9;;782:52;;;;;;805:10;782:52;;;;-1:-1:-1;;;;;817:5:40;;;782:52;;;;;;;;;;;;:9;;;;;:22;;:52;;;;;;;;;;;;;;;;;;;:9;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;782:52:40;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;782:52:40;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;782:52:40;774:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1033:9;;1013:10;;-1:-1:-1;;;;;1033:9:40;1000:44;;:::i;:::-;-1:-1:-1;;;;;1000:44:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1000:44:40;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1000:44:40;980:64;;1152:8;-1:-1:-1;;;;;1152:24:40;;:26;;;;;-1:-1:-1;;;1152:26:40;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1152:26:40;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1152:26:40;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1152:26:40;1135:13;;;1152:26;1135:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;1135:43:40;;;;:13;;1142:5;;;;;;1135:13;;1142:5;;;;1135:13;;-1:-1:-1;1135:6:40;;-1:-1:-1;;;;;1135:13:40:i;:::-;-1:-1:-1;;1135:43:40;;1127:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:8;-1:-1:-1;;;;;1227:22:40;1250:5;;1227:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1219:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1362:4;1343:9;:7;:9::i;:::-;1295:90;;;-1:-1:-1;;;;;1295:90:40;;;;1369:10;1295:90;;;;1381:3;1295:90;;;;;;;;;;;;;;;1410:8;678:748;-1:-1:-1;;;678:748:40:o;363:38:14:-;;;;:::o;1490:71:40:-;1553:1;1490:71;:::o;1625:82::-;1683:17;1625:82;:::o;1778:89::-;1842:18;;;;;;;;;;;;;;;;;1778:89;:::o;3197:265:14:-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;3329:23:14;;3297:93;;;;;;;;;;;;3384:4;3297:93;;;;;;;;;;;;;;3400:23;:46;3197:265::o;2548:193::-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;2659:9:14;;2634:65;;;;;;;;;;;;2693:4;2634:65;;;;;;;;;;;;;;2709:9;:25;2548:193::o;275:22::-;;;-1:-1:-1;;;;;275:22:14;;:::o;827:111:64:-;719:5;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;903:5;;;884:25;;-1:-1:-1;;;;;903:5:64;;;;884:25;;;931:1;915:18;;-1:-1:-1;;915:18:64;;;827:111::o;303:24:14:-;;;;:::o;238:20:64:-;;;-1:-1:-1;;;;;238:20:64;;:::o;2304:261:40:-;2397:16;;;2411:1;2397:16;;;;;;;;;2343:9;;;;2397:16;;;;17:15:-1;;105:10;2397:16:40;88:34:-1;136:17;;-1:-1;2397:16:40;2364:49;;2423:26;:13;2437:1;2423:16;;;;;;;;;;;;;;;;;;:26;2459:16;;:35;;:13;;2473:1;;2459:16;;;;;;;;;;;;;;:35;2504:16;;:24;;:13;;2518:1;;2504:16;;;;;;;;;;;;;;:24;2545:13;-1:-1:-1;2304:261:40;:::o;2862:193:14:-;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;2973:9:14;;2948:65;;;;;;;;;;;;3007:4;2948:65;;;;;;;;;;;;;;3023:9;:25;2862:193::o;333:24::-;;;;:::o;2104:120:40:-;2169:48;;;2151:6;2169:48;;;;;;;;;;;;;;;;;;;;2104:120;:::o;1100:103:64:-;719:5;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;1169:29;1188:9;1169:18;:29::i;:::-;1100:103;:::o;2166:261:14:-;2218:10;2240:8;2301:6;2266:1;2251:5;:12;:16;:35;;2285:1;2251:35;;;2270:5;:12;2251:35;2240:46;;2310:1;2301:10;;2296:125;2317:3;2313:1;:7;2296:125;;;2405:1;2401;2395:3;:7;:11;2390:1;:17;2384:1;:24;2371:5;2377:1;2371:8;;;;;;;;;;;;;;;-1:-1:-1;;;2371:8:14;;-1:-1:-1;;;2371:8:14;-1:-1:-1;;;2366:14:14;;:43;2359:3;-1:-1:-1;;;2354:9:14;;:55;-1:-1:-1;;;2347:63:14;2341:69;;2322:3;;;;;;;2296:125;;;2166:261;;;;;:::o;1338:171:64:-;-1:-1:-1;;;;;1408:23:64;;;;1400:32;;;;;;1464:5;;;1443:38;;-1:-1:-1;;;;;1443:38:64;;;;1464:5;;;1443:38;;;1487:5;:17;;-1:-1:-1;;1487:17:64;-1:-1:-1;;;;;1487:17:64;;;;;;;;;;1338:171::o;193:2374:40:-;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./DummySTO.sol\";\nimport \"../../interfaces/IModuleFactory.sol\";\nimport \"../../interfaces/IModule.sol\";\n\n/**\n * @title Factory for deploying DummySTO module\n */\ncontract DummySTOFactory is IModuleFactory {\n\n    /**\n     * @notice Constructor\n     * @param _polyAddress Address of the polytoken\n     */\n    constructor (address _polyAddress, uint256 _setupCost, uint256 _usageCost, uint256 _subscriptionCost) public\n      IModuleFactory(_polyAddress, _setupCost, _usageCost, _subscriptionCost)\n    {\n\n    }\n    /**\n     * @notice used to launch the Module with the help of factory\n     * @return address Contract address of the Module\n     */\n    function deploy(bytes _data) external returns(address) {\n        if (setupCost > 0)\n            require(polyToken.transferFrom(msg.sender, owner, setupCost), \"Failed transferFrom because of sufficent Allowance is not provided\");\n        //Check valid bytes - can only call module init function\n        DummySTO dummySTO = new DummySTO(msg.sender, address(polyToken));\n        //Checks that _data is valid (not calling anything it shouldn't)\n        require(getSig(_data) == dummySTO.getInitFunction(), \"Provided data is not valid\");\n        require(address(dummySTO).call(_data), \"Un-successfull call\");\n        emit LogGenerateModuleFromFactory(address(dummySTO), getName(), address(this), msg.sender, now);\n        return address(dummySTO);\n    }\n\n    /**\n     * @notice Type of the Module factory\n     */\n    function getType() public view returns(uint8) {\n        return 3;\n    }\n\n    /**\n     * @notice Get the name of the Module\n     */\n    function getName() public view returns(bytes32) {\n        return \"DummySTO\";\n    }\n\n    /**\n     * @notice Get the description of the Module\n     */\n    function getDescription() public view returns(string) {\n        return \"Dummy STO\";\n    }\n\n    /**\n     * @notice Get the title of the Module\n     */\n    function getTitle() public view returns(string) {\n        return \"Dummy STO\";\n    }\n\n    /**\n     * @notice Get the Instructions that helped to used the module\n     */\n    function getInstructions() public view returns(string) {\n        return \"Dummy STO - you can mint tokens at will\";\n    }\n\n    /**\n     * @notice Get the tags related to the module factory\n     */\n    function getTags() public view returns(bytes32[]) {\n        bytes32[] memory availableTags = new bytes32[](4);\n        availableTags[0] = \"Dummy\";\n        availableTags[1] = \"Non-refundable\";\n        availableTags[2] = \"ETH\";\n        return availableTags;\n    }\n}\n",
  "sourcePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/STO/DummySTOFactory.sol",
  "ast": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/STO/DummySTOFactory.sol",
    "exportedSymbols": {
      "DummySTOFactory": [
        14488
      ]
    },
    "id": 14489,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14314,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:40"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/STO/DummySTO.sol",
        "file": "./DummySTO.sol",
        "id": 14315,
        "nodeType": "ImportDirective",
        "scope": 14489,
        "sourceUnit": 14313,
        "src": "26:24:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/IModuleFactory.sol",
        "file": "../../interfaces/IModuleFactory.sol",
        "id": 14316,
        "nodeType": "ImportDirective",
        "scope": 14489,
        "sourceUnit": 9955,
        "src": "51:45:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/IModule.sol",
        "file": "../../interfaces/IModule.sol",
        "id": 14317,
        "nodeType": "ImportDirective",
        "scope": 14489,
        "sourceUnit": 9718,
        "src": "97:38:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14318,
              "name": "IModuleFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9954,
              "src": "221:14:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                "typeString": "contract IModuleFactory"
              }
            },
            "id": 14319,
            "nodeType": "InheritanceSpecifier",
            "src": "221:14:40"
          }
        ],
        "contractDependencies": [
          9954,
          14312,
          22664
        ],
        "contractKind": "contract",
        "documentation": "@title Factory for deploying DummySTO module",
        "fullyImplemented": true,
        "id": 14488,
        "linearizedBaseContracts": [
          14488,
          9954,
          22664
        ],
        "name": "DummySTOFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 14336,
              "nodeType": "Block",
              "src": "529:8:40",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _polyAddress Address of the polytoken",
            "id": 14337,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14330,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14321,
                    "src": "468:12:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 14331,
                    "name": "_setupCost",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14323,
                    "src": "482:10:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 14332,
                    "name": "_usageCost",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14325,
                    "src": "494:10:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 14333,
                    "name": "_subscriptionCost",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14327,
                    "src": "506:17:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 14334,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14329,
                  "name": "IModuleFactory",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9954,
                  "src": "453:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModuleFactory_$9954_$",
                    "typeString": "type(contract IModuleFactory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "453:71:40"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14321,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 14337,
                  "src": "351:20:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14320,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "351:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14323,
                  "name": "_setupCost",
                  "nodeType": "VariableDeclaration",
                  "scope": 14337,
                  "src": "373:18:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14322,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "373:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14325,
                  "name": "_usageCost",
                  "nodeType": "VariableDeclaration",
                  "scope": 14337,
                  "src": "393:18:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14324,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "393:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14327,
                  "name": "_subscriptionCost",
                  "nodeType": "VariableDeclaration",
                  "scope": 14337,
                  "src": "413:25:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14326,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "413:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "350:89:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14335,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "529:0:40"
            },
            "scope": 14488,
            "src": "338:199:40",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14409,
              "nodeType": "Block",
              "src": "733:693:40",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14344,
                      "name": "setupCost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9727,
                      "src": "747:9:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 14345,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "759:1:40",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "747:13:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14358,
                  "nodeType": "IfStatement",
                  "src": "743:162:40",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14350,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23131,
                                "src": "805:3:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "805:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14352,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22582,
                              "src": "817:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14353,
                              "name": "setupCost",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9727,
                              "src": "824:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14348,
                              "name": "polyToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9725,
                              "src": "782:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$22837",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 14349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22819,
                            "src": "782:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 14354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "782:52:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "4661696c6564207472616e7366657246726f6d2062656361757365206f6620737566666963656e7420416c6c6f77616e6365206973206e6f742070726f7669646564",
                          "id": 14355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "836:68:40",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_39f8133d9e40dc5e6b34d9a9e536ce9c723fe05af13c2feb51de7d902ca65f7f",
                            "typeString": "literal_string \"Failed transferFrom because of sufficent Allowance is not provided\""
                          },
                          "value": "Failed transferFrom because of sufficent Allowance is not provided"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_39f8133d9e40dc5e6b34d9a9e536ce9c723fe05af13c2feb51de7d902ca65f7f",
                            "typeString": "literal_string \"Failed transferFrom because of sufficent Allowance is not provided\""
                          }
                        ],
                        "id": 14347,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          23134,
                          23135
                        ],
                        "referencedDeclaration": 23135,
                        "src": "774:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 14356,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "774:131:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 14357,
                    "nodeType": "ExpressionStatement",
                    "src": "774:131:40"
                  }
                },
                {
                  "assignments": [
                    14360
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14360,
                      "name": "dummySTO",
                      "nodeType": "VariableDeclaration",
                      "scope": 14410,
                      "src": "980:17:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DummySTO_$14312",
                        "typeString": "contract DummySTO"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14359,
                        "name": "DummySTO",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 14312,
                        "src": "980:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DummySTO_$14312",
                          "typeString": "contract DummySTO"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14369,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14363,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "1013:3:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 14364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1013:10:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14366,
                            "name": "polyToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9725,
                            "src": "1033:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$22837",
                              "typeString": "contract ERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ERC20_$22837",
                              "typeString": "contract ERC20"
                            }
                          ],
                          "id": 14365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1025:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 14367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1025:18:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 14362,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1000:12:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$returns$_t_contract$_DummySTO_$14312_$",
                        "typeString": "function (address,address) returns (contract DummySTO)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14361,
                        "name": "DummySTO",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 14312,
                        "src": "1004:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DummySTO_$14312",
                          "typeString": "contract DummySTO"
                        }
                      }
                    },
                    "id": 14368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1000:44:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DummySTO_$14312",
                      "typeString": "contract DummySTO"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "980:64:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 14377,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14372,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14339,
                              "src": "1142:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 14371,
                            "name": "getSig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9893,
                            "src": "1135:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 14373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1135:13:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14374,
                              "name": "dummySTO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14360,
                              "src": "1152:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DummySTO_$14312",
                                "typeString": "contract DummySTO"
                              }
                            },
                            "id": 14375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getInitFunction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14195,
                            "src": "1152:24:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_pure$__$returns$_t_bytes4_$",
                              "typeString": "function () pure external returns (bytes4)"
                            }
                          },
                          "id": 14376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1152:26:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "1135:43:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50726f76696465642064617461206973206e6f742076616c6964",
                        "id": 14378,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1180:28:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f8008f13ad2e2367c07367b70af99d6be231b2b5463054f52084cbdc49de8315",
                          "typeString": "literal_string \"Provided data is not valid\""
                        },
                        "value": "Provided data is not valid"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f8008f13ad2e2367c07367b70af99d6be231b2b5463054f52084cbdc49de8315",
                          "typeString": "literal_string \"Provided data is not valid\""
                        }
                      ],
                      "id": 14370,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "1127:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1127:82:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14380,
                  "nodeType": "ExpressionStatement",
                  "src": "1127:82:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14386,
                            "name": "_data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14339,
                            "src": "1250:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14383,
                                "name": "dummySTO",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14360,
                                "src": "1235:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DummySTO_$14312",
                                  "typeString": "contract DummySTO"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_DummySTO_$14312",
                                  "typeString": "contract DummySTO"
                                }
                              ],
                              "id": 14382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1227:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 14384,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1227:17:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 14385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1227:22:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$__$returns$_t_bool_$",
                            "typeString": "function () payable returns (bool)"
                          }
                        },
                        "id": 14387,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1227:29:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e2d7375636365737366756c6c2063616c6c",
                        "id": 14388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1258:21:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c4b1d57bea6997b31af3b7d5cb2f4ae47da92d71f0f5964b88132fc35f347c32",
                          "typeString": "literal_string \"Un-successfull call\""
                        },
                        "value": "Un-successfull call"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c4b1d57bea6997b31af3b7d5cb2f4ae47da92d71f0f5964b88132fc35f347c32",
                          "typeString": "literal_string \"Un-successfull call\""
                        }
                      ],
                      "id": 14381,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "1219:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1219:61:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14390,
                  "nodeType": "ExpressionStatement",
                  "src": "1219:61:40"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14393,
                            "name": "dummySTO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14360,
                            "src": "1332:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DummySTO_$14312",
                              "typeString": "contract DummySTO"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DummySTO_$14312",
                              "typeString": "contract DummySTO"
                            }
                          ],
                          "id": 14392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1324:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 14394,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1324:17:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 14395,
                          "name": "getName",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            14426
                          ],
                          "referencedDeclaration": 14426,
                          "src": "1343:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view returns (bytes32)"
                          }
                        },
                        "id": 14396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1343:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14398,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23276,
                            "src": "1362:4:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DummySTOFactory_$14488",
                              "typeString": "contract DummySTOFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DummySTOFactory_$14488",
                              "typeString": "contract DummySTOFactory"
                            }
                          ],
                          "id": 14397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1354:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 14399,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1354:13:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14400,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "1369:3:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 14401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1369:10:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14402,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23133,
                        "src": "1381:3:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 14391,
                      "name": "LogGenerateModuleFromFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9767,
                      "src": "1295:28:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,address,address,uint256)"
                      }
                    },
                    "id": 14403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1295:90:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14404,
                  "nodeType": "EmitStatement",
                  "src": "1290:95:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14406,
                        "name": "dummySTO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14360,
                        "src": "1410:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DummySTO_$14312",
                          "typeString": "contract DummySTO"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_DummySTO_$14312",
                          "typeString": "contract DummySTO"
                        }
                      ],
                      "id": 14405,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1402:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 14407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1402:17:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 14343,
                  "id": 14408,
                  "nodeType": "Return",
                  "src": "1395:24:40"
                }
              ]
            },
            "documentation": "@notice used to launch the Module with the help of factory\n@return address Contract address of the Module",
            "id": 14410,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "deploy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14339,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 14410,
                  "src": "694:11:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 14338,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "694:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "693:13:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14343,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14342,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14410,
                  "src": "724:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14341,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "724:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "723:9:40"
            },
            "scope": 14488,
            "src": "678:748:40",
            "stateMutability": "nonpayable",
            "superFunction": 9804,
            "visibility": "external"
          },
          {
            "body": {
              "id": 14417,
              "nodeType": "Block",
              "src": "1536:25:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 14415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1553:1:40",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "functionReturnParameters": 14414,
                  "id": 14416,
                  "nodeType": "Return",
                  "src": "1546:8:40"
                }
              ]
            },
            "documentation": "@notice Type of the Module factory",
            "id": 14418,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getType",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14411,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1506:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14413,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14418,
                  "src": "1529:5:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 14412,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1529:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1528:7:40"
            },
            "scope": 14488,
            "src": "1490:71:40",
            "stateMutability": "view",
            "superFunction": 9809,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14425,
              "nodeType": "Block",
              "src": "1673:34:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "44756d6d7953544f",
                    "id": 14423,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1690:10:40",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_4a1e322cee2d95885f857c4504a83c8331daf601267554ad30a7bf4345e6af58",
                      "typeString": "literal_string \"DummySTO\""
                    },
                    "value": "DummySTO"
                  },
                  "functionReturnParameters": 14422,
                  "id": 14424,
                  "nodeType": "Return",
                  "src": "1683:17:40"
                }
              ]
            },
            "documentation": "@notice Get the name of the Module",
            "id": 14426,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14419,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1641:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14422,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14421,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14426,
                  "src": "1664:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14420,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1664:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1663:9:40"
            },
            "scope": 14488,
            "src": "1625:82:40",
            "stateMutability": "view",
            "superFunction": 9814,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14433,
              "nodeType": "Block",
              "src": "1832:35:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "44756d6d792053544f",
                    "id": 14431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1849:11:40",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_ed9478bd9a218fc3573bb3f508bd1b274a0ebb29de41b3e93c80b950d8357b1a",
                      "typeString": "literal_string \"Dummy STO\""
                    },
                    "value": "Dummy STO"
                  },
                  "functionReturnParameters": 14430,
                  "id": 14432,
                  "nodeType": "Return",
                  "src": "1842:18:40"
                }
              ]
            },
            "documentation": "@notice Get the description of the Module",
            "id": 14434,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getDescription",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14427,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1801:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14430,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14429,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14434,
                  "src": "1824:6:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14428,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1824:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1823:8:40"
            },
            "scope": 14488,
            "src": "1778:89:40",
            "stateMutability": "view",
            "superFunction": 9819,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14441,
              "nodeType": "Block",
              "src": "1980:35:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "44756d6d792053544f",
                    "id": 14439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1997:11:40",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_ed9478bd9a218fc3573bb3f508bd1b274a0ebb29de41b3e93c80b950d8357b1a",
                      "typeString": "literal_string \"Dummy STO\""
                    },
                    "value": "Dummy STO"
                  },
                  "functionReturnParameters": 14438,
                  "id": 14440,
                  "nodeType": "Return",
                  "src": "1990:18:40"
                }
              ]
            },
            "documentation": "@notice Get the title of the Module",
            "id": 14442,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTitle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14435,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1949:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14437,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14442,
                  "src": "1972:6:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14436,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1972:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1971:8:40"
            },
            "scope": 14488,
            "src": "1932:83:40",
            "stateMutability": "view",
            "superFunction": 9824,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14449,
              "nodeType": "Block",
              "src": "2159:65:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "44756d6d792053544f202d20796f752063616e206d696e7420746f6b656e732061742077696c6c",
                    "id": 14447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2176:41:40",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_68c83e5fc61799f3f7f29e8e6d69208b4d56d7cdca6cef91dfe5b7534001e0ae",
                      "typeString": "literal_string \"Dummy STO - you can mint tokens at will\""
                    },
                    "value": "Dummy STO - you can mint tokens at will"
                  },
                  "functionReturnParameters": 14446,
                  "id": 14448,
                  "nodeType": "Return",
                  "src": "2169:48:40"
                }
              ]
            },
            "documentation": "@notice Get the Instructions that helped to used the module",
            "id": 14450,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInstructions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14443,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2128:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14446,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14445,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14450,
                  "src": "2151:6:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14444,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2151:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2150:8:40"
            },
            "scope": 14488,
            "src": "2104:120:40",
            "stateMutability": "view",
            "superFunction": 9829,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14486,
              "nodeType": "Block",
              "src": "2354:211:40",
              "statements": [
                {
                  "assignments": [
                    14459
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14459,
                      "name": "availableTags",
                      "nodeType": "VariableDeclaration",
                      "scope": 14487,
                      "src": "2364:30:40",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 14457,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2364:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 14458,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2364:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14465,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 14463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2411:1:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 14462,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2397:13:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 14460,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2401:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 14461,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2401:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 14464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2397:16:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2364:49:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 14466,
                        "name": "availableTags",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14459,
                        "src": "2423:13:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 14468,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 14467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2437:1:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2423:16:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "44756d6d79",
                      "id": 14469,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2442:7:40",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_09658da3e5caa6c61a15d83b96e46921be5190a358e65074658d49b3fc25cbd2",
                        "typeString": "literal_string \"Dummy\""
                      },
                      "value": "Dummy"
                    },
                    "src": "2423:26:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14471,
                  "nodeType": "ExpressionStatement",
                  "src": "2423:26:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 14472,
                        "name": "availableTags",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14459,
                        "src": "2459:13:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 14474,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 14473,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2473:1:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2459:16:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "4e6f6e2d726566756e6461626c65",
                      "id": 14475,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2478:16:40",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_500edffc1231e51f217a4f9dd1d05855b157bcf2508b5e0c5d6467dbf46db6bc",
                        "typeString": "literal_string \"Non-refundable\""
                      },
                      "value": "Non-refundable"
                    },
                    "src": "2459:35:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14477,
                  "nodeType": "ExpressionStatement",
                  "src": "2459:35:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 14478,
                        "name": "availableTags",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14459,
                        "src": "2504:13:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 14480,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 14479,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2518:1:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2504:16:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "455448",
                      "id": 14481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2523:5:40",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_aaaebeba3810b1e6b70781f14b2d72c1cb89c0b2b320c43bb67ff79f562f5ff4",
                        "typeString": "literal_string \"ETH\""
                      },
                      "value": "ETH"
                    },
                    "src": "2504:24:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14483,
                  "nodeType": "ExpressionStatement",
                  "src": "2504:24:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14484,
                    "name": "availableTags",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14459,
                    "src": "2545:13:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 14455,
                  "id": 14485,
                  "nodeType": "Return",
                  "src": "2538:20:40"
                }
              ]
            },
            "documentation": "@notice Get the tags related to the module factory",
            "id": 14487,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTags",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14451,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2320:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14454,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14487,
                  "src": "2343:9:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14452,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "2343:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 14453,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2343:9:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2342:11:40"
            },
            "scope": 14488,
            "src": "2304:261:40",
            "stateMutability": "view",
            "superFunction": 9835,
            "visibility": "public"
          }
        ],
        "scope": 14489,
        "src": "193:2374:40"
      }
    ],
    "src": "0:2568:40"
  },
  "legacyAST": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/STO/DummySTOFactory.sol",
    "exportedSymbols": {
      "DummySTOFactory": [
        14488
      ]
    },
    "id": 14489,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14314,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:40"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/STO/DummySTO.sol",
        "file": "./DummySTO.sol",
        "id": 14315,
        "nodeType": "ImportDirective",
        "scope": 14489,
        "sourceUnit": 14313,
        "src": "26:24:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/IModuleFactory.sol",
        "file": "../../interfaces/IModuleFactory.sol",
        "id": 14316,
        "nodeType": "ImportDirective",
        "scope": 14489,
        "sourceUnit": 9955,
        "src": "51:45:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/IModule.sol",
        "file": "../../interfaces/IModule.sol",
        "id": 14317,
        "nodeType": "ImportDirective",
        "scope": 14489,
        "sourceUnit": 9718,
        "src": "97:38:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14318,
              "name": "IModuleFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9954,
              "src": "221:14:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                "typeString": "contract IModuleFactory"
              }
            },
            "id": 14319,
            "nodeType": "InheritanceSpecifier",
            "src": "221:14:40"
          }
        ],
        "contractDependencies": [
          9954,
          14312,
          22664
        ],
        "contractKind": "contract",
        "documentation": "@title Factory for deploying DummySTO module",
        "fullyImplemented": true,
        "id": 14488,
        "linearizedBaseContracts": [
          14488,
          9954,
          22664
        ],
        "name": "DummySTOFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 14336,
              "nodeType": "Block",
              "src": "529:8:40",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _polyAddress Address of the polytoken",
            "id": 14337,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14330,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14321,
                    "src": "468:12:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 14331,
                    "name": "_setupCost",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14323,
                    "src": "482:10:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 14332,
                    "name": "_usageCost",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14325,
                    "src": "494:10:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 14333,
                    "name": "_subscriptionCost",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14327,
                    "src": "506:17:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 14334,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14329,
                  "name": "IModuleFactory",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9954,
                  "src": "453:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModuleFactory_$9954_$",
                    "typeString": "type(contract IModuleFactory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "453:71:40"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14321,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 14337,
                  "src": "351:20:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14320,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "351:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14323,
                  "name": "_setupCost",
                  "nodeType": "VariableDeclaration",
                  "scope": 14337,
                  "src": "373:18:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14322,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "373:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14325,
                  "name": "_usageCost",
                  "nodeType": "VariableDeclaration",
                  "scope": 14337,
                  "src": "393:18:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14324,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "393:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14327,
                  "name": "_subscriptionCost",
                  "nodeType": "VariableDeclaration",
                  "scope": 14337,
                  "src": "413:25:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14326,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "413:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "350:89:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14335,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "529:0:40"
            },
            "scope": 14488,
            "src": "338:199:40",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14409,
              "nodeType": "Block",
              "src": "733:693:40",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14344,
                      "name": "setupCost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9727,
                      "src": "747:9:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 14345,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "759:1:40",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "747:13:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14358,
                  "nodeType": "IfStatement",
                  "src": "743:162:40",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14350,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23131,
                                "src": "805:3:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "805:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14352,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22582,
                              "src": "817:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14353,
                              "name": "setupCost",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9727,
                              "src": "824:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14348,
                              "name": "polyToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9725,
                              "src": "782:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$22837",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 14349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22819,
                            "src": "782:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 14354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "782:52:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "4661696c6564207472616e7366657246726f6d2062656361757365206f6620737566666963656e7420416c6c6f77616e6365206973206e6f742070726f7669646564",
                          "id": 14355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "836:68:40",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_39f8133d9e40dc5e6b34d9a9e536ce9c723fe05af13c2feb51de7d902ca65f7f",
                            "typeString": "literal_string \"Failed transferFrom because of sufficent Allowance is not provided\""
                          },
                          "value": "Failed transferFrom because of sufficent Allowance is not provided"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_39f8133d9e40dc5e6b34d9a9e536ce9c723fe05af13c2feb51de7d902ca65f7f",
                            "typeString": "literal_string \"Failed transferFrom because of sufficent Allowance is not provided\""
                          }
                        ],
                        "id": 14347,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          23134,
                          23135
                        ],
                        "referencedDeclaration": 23135,
                        "src": "774:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 14356,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "774:131:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 14357,
                    "nodeType": "ExpressionStatement",
                    "src": "774:131:40"
                  }
                },
                {
                  "assignments": [
                    14360
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14360,
                      "name": "dummySTO",
                      "nodeType": "VariableDeclaration",
                      "scope": 14410,
                      "src": "980:17:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DummySTO_$14312",
                        "typeString": "contract DummySTO"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14359,
                        "name": "DummySTO",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 14312,
                        "src": "980:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DummySTO_$14312",
                          "typeString": "contract DummySTO"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14369,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14363,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "1013:3:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 14364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1013:10:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14366,
                            "name": "polyToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9725,
                            "src": "1033:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$22837",
                              "typeString": "contract ERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ERC20_$22837",
                              "typeString": "contract ERC20"
                            }
                          ],
                          "id": 14365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1025:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 14367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1025:18:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 14362,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1000:12:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$returns$_t_contract$_DummySTO_$14312_$",
                        "typeString": "function (address,address) returns (contract DummySTO)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14361,
                        "name": "DummySTO",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 14312,
                        "src": "1004:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DummySTO_$14312",
                          "typeString": "contract DummySTO"
                        }
                      }
                    },
                    "id": 14368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1000:44:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DummySTO_$14312",
                      "typeString": "contract DummySTO"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "980:64:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 14377,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14372,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14339,
                              "src": "1142:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 14371,
                            "name": "getSig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9893,
                            "src": "1135:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 14373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1135:13:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14374,
                              "name": "dummySTO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14360,
                              "src": "1152:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DummySTO_$14312",
                                "typeString": "contract DummySTO"
                              }
                            },
                            "id": 14375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getInitFunction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14195,
                            "src": "1152:24:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_pure$__$returns$_t_bytes4_$",
                              "typeString": "function () pure external returns (bytes4)"
                            }
                          },
                          "id": 14376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1152:26:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "1135:43:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50726f76696465642064617461206973206e6f742076616c6964",
                        "id": 14378,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1180:28:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f8008f13ad2e2367c07367b70af99d6be231b2b5463054f52084cbdc49de8315",
                          "typeString": "literal_string \"Provided data is not valid\""
                        },
                        "value": "Provided data is not valid"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f8008f13ad2e2367c07367b70af99d6be231b2b5463054f52084cbdc49de8315",
                          "typeString": "literal_string \"Provided data is not valid\""
                        }
                      ],
                      "id": 14370,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "1127:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1127:82:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14380,
                  "nodeType": "ExpressionStatement",
                  "src": "1127:82:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14386,
                            "name": "_data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14339,
                            "src": "1250:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14383,
                                "name": "dummySTO",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14360,
                                "src": "1235:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DummySTO_$14312",
                                  "typeString": "contract DummySTO"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_DummySTO_$14312",
                                  "typeString": "contract DummySTO"
                                }
                              ],
                              "id": 14382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1227:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 14384,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1227:17:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 14385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1227:22:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$__$returns$_t_bool_$",
                            "typeString": "function () payable returns (bool)"
                          }
                        },
                        "id": 14387,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1227:29:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e2d7375636365737366756c6c2063616c6c",
                        "id": 14388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1258:21:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c4b1d57bea6997b31af3b7d5cb2f4ae47da92d71f0f5964b88132fc35f347c32",
                          "typeString": "literal_string \"Un-successfull call\""
                        },
                        "value": "Un-successfull call"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c4b1d57bea6997b31af3b7d5cb2f4ae47da92d71f0f5964b88132fc35f347c32",
                          "typeString": "literal_string \"Un-successfull call\""
                        }
                      ],
                      "id": 14381,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "1219:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1219:61:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14390,
                  "nodeType": "ExpressionStatement",
                  "src": "1219:61:40"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14393,
                            "name": "dummySTO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14360,
                            "src": "1332:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DummySTO_$14312",
                              "typeString": "contract DummySTO"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DummySTO_$14312",
                              "typeString": "contract DummySTO"
                            }
                          ],
                          "id": 14392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1324:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 14394,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1324:17:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 14395,
                          "name": "getName",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            14426
                          ],
                          "referencedDeclaration": 14426,
                          "src": "1343:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view returns (bytes32)"
                          }
                        },
                        "id": 14396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1343:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14398,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23276,
                            "src": "1362:4:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DummySTOFactory_$14488",
                              "typeString": "contract DummySTOFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DummySTOFactory_$14488",
                              "typeString": "contract DummySTOFactory"
                            }
                          ],
                          "id": 14397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1354:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 14399,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1354:13:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14400,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "1369:3:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 14401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1369:10:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14402,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23133,
                        "src": "1381:3:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 14391,
                      "name": "LogGenerateModuleFromFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9767,
                      "src": "1295:28:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,address,address,uint256)"
                      }
                    },
                    "id": 14403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1295:90:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14404,
                  "nodeType": "EmitStatement",
                  "src": "1290:95:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14406,
                        "name": "dummySTO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14360,
                        "src": "1410:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DummySTO_$14312",
                          "typeString": "contract DummySTO"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_DummySTO_$14312",
                          "typeString": "contract DummySTO"
                        }
                      ],
                      "id": 14405,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1402:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 14407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1402:17:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 14343,
                  "id": 14408,
                  "nodeType": "Return",
                  "src": "1395:24:40"
                }
              ]
            },
            "documentation": "@notice used to launch the Module with the help of factory\n@return address Contract address of the Module",
            "id": 14410,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "deploy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14339,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 14410,
                  "src": "694:11:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 14338,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "694:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "693:13:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14343,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14342,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14410,
                  "src": "724:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14341,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "724:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "723:9:40"
            },
            "scope": 14488,
            "src": "678:748:40",
            "stateMutability": "nonpayable",
            "superFunction": 9804,
            "visibility": "external"
          },
          {
            "body": {
              "id": 14417,
              "nodeType": "Block",
              "src": "1536:25:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 14415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1553:1:40",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "functionReturnParameters": 14414,
                  "id": 14416,
                  "nodeType": "Return",
                  "src": "1546:8:40"
                }
              ]
            },
            "documentation": "@notice Type of the Module factory",
            "id": 14418,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getType",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14411,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1506:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14413,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14418,
                  "src": "1529:5:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 14412,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1529:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1528:7:40"
            },
            "scope": 14488,
            "src": "1490:71:40",
            "stateMutability": "view",
            "superFunction": 9809,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14425,
              "nodeType": "Block",
              "src": "1673:34:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "44756d6d7953544f",
                    "id": 14423,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1690:10:40",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_4a1e322cee2d95885f857c4504a83c8331daf601267554ad30a7bf4345e6af58",
                      "typeString": "literal_string \"DummySTO\""
                    },
                    "value": "DummySTO"
                  },
                  "functionReturnParameters": 14422,
                  "id": 14424,
                  "nodeType": "Return",
                  "src": "1683:17:40"
                }
              ]
            },
            "documentation": "@notice Get the name of the Module",
            "id": 14426,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14419,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1641:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14422,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14421,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14426,
                  "src": "1664:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14420,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1664:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1663:9:40"
            },
            "scope": 14488,
            "src": "1625:82:40",
            "stateMutability": "view",
            "superFunction": 9814,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14433,
              "nodeType": "Block",
              "src": "1832:35:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "44756d6d792053544f",
                    "id": 14431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1849:11:40",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_ed9478bd9a218fc3573bb3f508bd1b274a0ebb29de41b3e93c80b950d8357b1a",
                      "typeString": "literal_string \"Dummy STO\""
                    },
                    "value": "Dummy STO"
                  },
                  "functionReturnParameters": 14430,
                  "id": 14432,
                  "nodeType": "Return",
                  "src": "1842:18:40"
                }
              ]
            },
            "documentation": "@notice Get the description of the Module",
            "id": 14434,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getDescription",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14427,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1801:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14430,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14429,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14434,
                  "src": "1824:6:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14428,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1824:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1823:8:40"
            },
            "scope": 14488,
            "src": "1778:89:40",
            "stateMutability": "view",
            "superFunction": 9819,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14441,
              "nodeType": "Block",
              "src": "1980:35:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "44756d6d792053544f",
                    "id": 14439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1997:11:40",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_ed9478bd9a218fc3573bb3f508bd1b274a0ebb29de41b3e93c80b950d8357b1a",
                      "typeString": "literal_string \"Dummy STO\""
                    },
                    "value": "Dummy STO"
                  },
                  "functionReturnParameters": 14438,
                  "id": 14440,
                  "nodeType": "Return",
                  "src": "1990:18:40"
                }
              ]
            },
            "documentation": "@notice Get the title of the Module",
            "id": 14442,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTitle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14435,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1949:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14437,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14442,
                  "src": "1972:6:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14436,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1972:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1971:8:40"
            },
            "scope": 14488,
            "src": "1932:83:40",
            "stateMutability": "view",
            "superFunction": 9824,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14449,
              "nodeType": "Block",
              "src": "2159:65:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "44756d6d792053544f202d20796f752063616e206d696e7420746f6b656e732061742077696c6c",
                    "id": 14447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2176:41:40",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_68c83e5fc61799f3f7f29e8e6d69208b4d56d7cdca6cef91dfe5b7534001e0ae",
                      "typeString": "literal_string \"Dummy STO - you can mint tokens at will\""
                    },
                    "value": "Dummy STO - you can mint tokens at will"
                  },
                  "functionReturnParameters": 14446,
                  "id": 14448,
                  "nodeType": "Return",
                  "src": "2169:48:40"
                }
              ]
            },
            "documentation": "@notice Get the Instructions that helped to used the module",
            "id": 14450,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInstructions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14443,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2128:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14446,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14445,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14450,
                  "src": "2151:6:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14444,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2151:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2150:8:40"
            },
            "scope": 14488,
            "src": "2104:120:40",
            "stateMutability": "view",
            "superFunction": 9829,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14486,
              "nodeType": "Block",
              "src": "2354:211:40",
              "statements": [
                {
                  "assignments": [
                    14459
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14459,
                      "name": "availableTags",
                      "nodeType": "VariableDeclaration",
                      "scope": 14487,
                      "src": "2364:30:40",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 14457,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2364:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 14458,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2364:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14465,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 14463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2411:1:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 14462,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2397:13:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 14460,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2401:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 14461,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2401:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 14464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2397:16:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2364:49:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 14466,
                        "name": "availableTags",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14459,
                        "src": "2423:13:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 14468,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 14467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2437:1:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2423:16:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "44756d6d79",
                      "id": 14469,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2442:7:40",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_09658da3e5caa6c61a15d83b96e46921be5190a358e65074658d49b3fc25cbd2",
                        "typeString": "literal_string \"Dummy\""
                      },
                      "value": "Dummy"
                    },
                    "src": "2423:26:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14471,
                  "nodeType": "ExpressionStatement",
                  "src": "2423:26:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 14472,
                        "name": "availableTags",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14459,
                        "src": "2459:13:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 14474,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 14473,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2473:1:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2459:16:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "4e6f6e2d726566756e6461626c65",
                      "id": 14475,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2478:16:40",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_500edffc1231e51f217a4f9dd1d05855b157bcf2508b5e0c5d6467dbf46db6bc",
                        "typeString": "literal_string \"Non-refundable\""
                      },
                      "value": "Non-refundable"
                    },
                    "src": "2459:35:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14477,
                  "nodeType": "ExpressionStatement",
                  "src": "2459:35:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 14478,
                        "name": "availableTags",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14459,
                        "src": "2504:13:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 14480,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 14479,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2518:1:40",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2504:16:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "455448",
                      "id": 14481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2523:5:40",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_aaaebeba3810b1e6b70781f14b2d72c1cb89c0b2b320c43bb67ff79f562f5ff4",
                        "typeString": "literal_string \"ETH\""
                      },
                      "value": "ETH"
                    },
                    "src": "2504:24:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14483,
                  "nodeType": "ExpressionStatement",
                  "src": "2504:24:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14484,
                    "name": "availableTags",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14459,
                    "src": "2545:13:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 14455,
                  "id": 14485,
                  "nodeType": "Return",
                  "src": "2538:20:40"
                }
              ]
            },
            "documentation": "@notice Get the tags related to the module factory",
            "id": 14487,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTags",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14451,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2320:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 14455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14454,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14487,
                  "src": "2343:9:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14452,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "2343:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 14453,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2343:9:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2342:11:40"
            },
            "scope": 14488,
            "src": "2304:261:40",
            "stateMutability": "view",
            "superFunction": 9835,
            "visibility": "public"
          }
        ],
        "scope": 14489,
        "src": "193:2374:40"
      }
    ],
    "src": "0:2568:40"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-08-21T09:48:12.557Z"
}