{"contractName":"LMSRMarketMakerFactory","abi":[{"constant":true,"inputs":[],"name":"implementationMaster","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"creator","type":"address"},{"indexed":false,"name":"lmsrMarketMaker","type":"address"},{"indexed":false,"name":"pmSystem","type":"address"},{"indexed":false,"name":"collateralToken","type":"address"},{"indexed":false,"name":"conditionIds","type":"bytes32[]"},{"indexed":false,"name":"fee","type":"uint64"},{"indexed":false,"name":"funding","type":"uint256"}],"name":"LMSRMarketMakerCreation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"initialFunding","type":"uint256"}],"name":"AMMCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"clone","type":"address"}],"name":"CloneCreated","type":"event"},{"constant":false,"inputs":[{"name":"consData","type":"bytes"}],"name":"cloneConstructor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pmSystem","type":"address"},{"name":"collateralToken","type":"address"},{"name":"conditionIds","type":"bytes32[]"},{"name":"fee","type":"uint64"},{"name":"whitelist","type":"address"},{"name":"funding","type":"uint256"}],"name":"createLMSRMarketMaker","outputs":[{"name":"lmsrMarketMaker","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.5.10+commit.5a6ea5b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"implementationMaster\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"consData\",\"type\":\"bytes\"}],\"name\":\"cloneConstructor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"pmSystem\",\"type\":\"address\"},{\"name\":\"collateralToken\",\"type\":\"address\"},{\"name\":\"conditionIds\",\"type\":\"bytes32[]\"},{\"name\":\"fee\",\"type\":\"uint64\"},{\"name\":\"whitelist\",\"type\":\"address\"},{\"name\":\"funding\",\"type\":\"uint256\"}],\"name\":\"createLMSRMarketMaker\",\"outputs\":[{\"name\":\"lmsrMarketMaker\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"lmsrMarketMaker\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"pmSystem\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"collateralToken\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"conditionIds\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"funding\",\"type\":\"uint256\"}],\"name\":\"LMSRMarketMakerCreation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"initialFunding\",\"type\":\"uint256\"}],\"name\":\"AMMCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"clone\",\"type\":\"address\"}],\"name\":\"CloneCreated\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/LMSRMarketMakerFactory.sol\":\"LMSRMarketMakerFactory\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/LMSRMarketMaker.sol\":{\"keccak256\":\"0x8410f1b98f546b1e6edc4b402bfc20a2956018415c6917421d9eef472633ac65\",\"urls\":[\"bzzr://33774de3e0bcec6c0640a50f571d9166f9566c0722f5faa4e90d3e1b763ad760\",\"dweb:/ipfs/QmPzfHt9ywEMjngVREdtZ2ywG5isfivPfkH9pzGXebv3cv\"]},\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/LMSRMarketMakerFactory.sol\":{\"keccak256\":\"0xeb3422a373f1395835a2fb2fecf25eb9b8c963f2b1c6a068e1cbb8d356375858\",\"urls\":[\"bzzr://e95029f143a912fc6f1a08fda21e69d24003e1b32b83976a5f3041e807fed1bd\",\"dweb:/ipfs/QmNQc1DTsvt2h3idHzPjvqQDxenuDAWhXnLA5NLDzyG641\"]},\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/MarketMaker.sol\":{\"keccak256\":\"0xa4addb4855f472eb1a4719298b5db759e475dd42bcd8de73d04c1ffc3b01bf40\",\"urls\":[\"bzzr://f7e679bd8b58cbc371c1a3919f740c47234cfdbda8253b6f65d2b2b57086def2\",\"dweb:/ipfs/QmQmjcWGQdmoogx9DBm8wtXxejXjDyuhmDFeihiCmzjd8N\"]},\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/Whitelist.sol\":{\"keccak256\":\"0xe608e935510e8190d6d9fd7a0a6ecc02776d0dd106cbcbe3bac5ee0309abfae5\",\"urls\":[\"bzzr://88b9da6174844aa2f45b5bf2686298a34a12c4546449ebc8344baaafd612ac42\",\"dweb:/ipfs/QmXqMsiTBAgfgZvfL5rP1QjFhfw56JBdyVmJJRmB2WoFJ4\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/CTHelpers.sol\":{\"keccak256\":\"0x921eadb1d6cd0e742448334fb84c39b358a18cdeb7c6badbb89cae847d44a201\",\"urls\":[\"bzzr://54ea8cd3a2ef100710306ce15475573542ad5235ced471d59fa1744cfaea51c8\",\"dweb:/ipfs/Qme871evGa1PBSBnV9PisLhYnFnnahLmBuy5KakLSUKRPF\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/ConditionalTokens.sol\":{\"keccak256\":\"0x11a610a3fa07ac8a59a09a76fdb944f058fdb06d3414fe49995595e68cd17d41\",\"urls\":[\"bzzr://aec70f70bf6166a9ae46146c7d293156967b345273a250667732f6f8a4355342\",\"dweb:/ipfs/QmWUFR7eKVsMS61UCK1yY2bQQhcqEQHAAmJ2FJ3GozWV8k\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/ERC1155/ERC1155.sol\":{\"keccak256\":\"0xd8e6583f45a98380ff10a5656a7ae7ba6a275e0d051043e5842f0d541abd7caa\",\"urls\":[\"bzzr://978cc82d056d10d8cc14b02f35801b10c0c2f87b0adbf6c41bbd622e20ab8cee\",\"dweb:/ipfs/QmYWqCK6moph6oeBEUc1nDaGz4GRdGXmykwKD5rykVbhcU\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/ERC1155/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x5d1e709c759b9bd72865c8608582d66fc338fde3a77f41abb04ae943915a5695\",\"urls\":[\"bzzr://55e5a597486430ad437bb8c8f0c93cf573b833fa84ccf64a25afaa01c761b839\",\"dweb:/ipfs/QmQ727N1676jG9F5iwakSG2RNeV82TVBGJHgHPmHxib8ah\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x4971631d7de74464fed3e0abac04553e917be5e8cd10b3f825e2e7c39ccc2734\",\"urls\":[\"bzzr://e1e88dfe7440ceab59d4cd604d12e5dc93409a3c5058e497763703027ea7b9e6\",\"dweb:/ipfs/QmRzsL1o6iVEFmqBYCo3XpM4kpvbK7iSJWssXHQ3gHb5uq\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/ERC1155/IERC1155TokenReceiver.sol\":{\"keccak256\":\"0xca815b5ca57df8f1056b962c2728d6a1e56fc7d9a7869ccee8f5a1ac6075b75d\",\"urls\":[\"bzzr://61df3e61bf24c80714e326ffdc274aaefc342241de3e72374131f613cddbd042\",\"dweb:/ipfs/QmPnF3rGuY2H3Gifvha4dW7fJPptP7wJerHzjz4dpzfTJW\"]},\"@gnosis.pm/util-contracts/contracts/ConstructedCloneFactory.sol\":{\"keccak256\":\"0xd07c04b6aea8ff41993cb0179120bb7c2416476311d992633578f6084b4f783a\",\"urls\":[\"bzzr://da18076e9777db71f6068039ed24a9c3171e272d87cb3090b0036fc5a64d97e8\",\"dweb:/ipfs/QmPXGzL5oMwUJSPxsD3L2bXxsaVqw88cGn6JzU6hskpL7U\"]},\"@gnosis.pm/util-contracts/contracts/Fixed192x64Math.sol\":{\"keccak256\":\"0xad15b641bf8f5862034749b679ab91cb2c330c2ca997da4455863dc169ab82d4\",\"urls\":[\"bzzr://a37b3d23f367b7f0ba4669c417af754260f0dbedad21294079aed622222427f5\",\"dweb:/ipfs/QmScvV8NpQNBNApJXyLFcLAG4hwWExSkwPhWJrJxLqk9x5\"]},\"@gnosis.pm/util-contracts/contracts/SignedSafeMath.sol\":{\"keccak256\":\"0xf96e8d30ae216bdded12e0330bd43258ff91d7f2e197ba51cd0bebe662b2abbb\",\"urls\":[\"bzzr://7693c86096ea689f6cf2a2a5a5e7247e1bb7bc3d6573e1d3044a94f6c8082544\",\"dweb:/ipfs/QmbDxe1eTT69qjLHwYWhxUU9nnE7ACZHLbWJCW8unoP7ET\"]},\"openzeppelin-solidity/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xac2eacd7e7762e275442f28f21d821544df5aae2ed7698af13be8c41b7005e2e\",\"urls\":[\"bzzr://43e901f6f210568ebc1d3591da3ce6a9d10796b854767a9c6e3da10305a8a332\",\"dweb:/ipfs/QmQhfx2Ufr8a2gFXm3KogL66xGgAuAWMwcamkWFKGG6Vya\"]},\"openzeppelin-solidity/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzzr://fc2ba15143ce3a00268ecd15fc98eb2469b18bfe27a64bbab0ac6446f161c739\",\"dweb:/ipfs/QmV7wjtRf11ibUHh4g8JjuhMpy68pPhV95L2y46UBoRfsZ\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzzr://1604f5b6d6e916c154efd8c6720cda069e5ba32dfa0a9dedf2b42e5b02d07f89\",\"dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0xf79fb10e8235770eb4aea7249034076a3cc9f9119ad944fc48705bae9c9d20dc\",\"urls\":[\"bzzr://d12a11272051eb6586de8f7e0a82c04a98c9984ce8b2a6cf1ee439f65aba29a9\",\"dweb:/ipfs/QmS55hgTvNEAKinus19m65CB4wcymN8EiUPFpRx5tYJ1i2\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzzr://aa8b45b57edafc3d67bc5d916327ea16807fae33f753ca163ae0c4061b789766\",\"dweb:/ipfs/QmP5NaEwZthQeM2ESz4WTT3osrP7jhbvu7ocbttBi2JAw6\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzzr://f7f6da60a184233fd666ac44e6fb2bd51ca6ebdc4867a310d368049aa4e62786\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}","bytecode":"0x608060405234801561001057600080fd5b5060405161001d9061005f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600c80546001600160a01b0319166001600160a01b039290921691909117905561006c565b6127db8061194183390190565b6118c68061007b6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806312b4d20c1461004657806352e831dd1461006a5780637c8b2c07146100dc575b600080fd5b61004e610184565b604080516001600160a01b039092168252519081900360200190f35b6100da6004803603602081101561008057600080fd5b81019060208101813564010000000081111561009b57600080fd5b8201836020820111156100ad57600080fd5b803590602001918460018302840111640100000000831117156100cf57600080fd5b509092509050610193565b005b61004e600480360360c08110156100f257600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561012657600080fd5b82018360208201111561013857600080fd5b8035906020019184602083028401116401000000008311171561015a57600080fd5b919350915067ffffffffffffffff813516906001600160a01b0360208201351690604001356105db565b600c546001600160a01b031681565b6000806060600080868660a08110156101ab57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184602083028401116401000000008311171561021357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092018290525080546001600160a01b03191633178082556040519a9f50989d50939b505067ffffffffffffffff8435169950506001600160a01b0360209093013583169750509316937f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09250839150a3600160208190527fb45820386466a8e01597d6e1efaf8f11ba4467972de5ca6c1f8aa3544ac2888e805460ff199081168317909155630271189760e51b6000527f2b11aca8aedb4d95239fb39fb7039ebbb812f8d66e5d5efc27f004162309980d805490911690911790556001600160a01b038516158015906103405750670de0b6b3a764000067ffffffffffffffff8316105b61034957600080fd5b600280546001600160a01b038088166001600160a01b0319928316179092556003805492871692909116919091179055825161038c90600490602086019061176c565b506006805467ffffffffffffffff191667ffffffffffffffff841617905560088054610100600160a81b0319166101006001600160a01b0384160217905560016005556004546040805182815260208084028201019091529080156103fb578160200160208202803883390190505b5080516104109160099160209091019061176c565b5060005b6004548110156104dd57600254600480546000926001600160a01b03169163d42dc0c2918590811061044257fe5b90600052602060002001546040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561048157600080fd5b505afa158015610495573d6000803e3d6000fd5b505050506040513d60208110156104ab57600080fd5b50516005805482029055600980549192508291849081106104c857fe5b60009182526020909120015550600101610414565b50600160055411610535576040805162461bcd60e51b815260206004820152601860248201527f636f6e646974696f6e73206d7573742062652076616c69640000000000000000604482015290519081900360640190fd5b60045460408051828152602080840282010190915290801561056b57816020015b60608152602001906001900390816105565790505b50805161058091600a916020909101906117b7565b5060045461058f9060006109b4565b6008805460ff1916600117905560075460408051918252517f631ac92e0a879a687b1bd27a7dcbf3ec0be307aa0a1046c0df4109be02c49307916020908290030190a150505050505050565b60006106b4600c60009054906101000a90046001600160a01b031689898989898960405160200180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018467ffffffffffffffff1667ffffffffffffffff168152602001836001600160a01b03166001600160a01b031681526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052610a85565b604080516323b872dd60e01b81523360048201523060248201526044810185905290519192506001600160a01b038916916323b872dd916064808201926020929091908290030181600087803b15801561070d57600080fd5b505af1158015610721573d6000803e3d6000fd5b505050506040513d602081101561073757600080fd5b50506040805163095ea7b360e01b81526001600160a01b0383811660048301526024820185905291519189169163095ea7b3916044808201926020929091908290030181600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b505050506040513d60208110156107b657600080fd5b5050604080516321fce69760e21b81526004810184905290516001600160a01b038316916387f39a5c91602480830192600092919082900301818387803b15801561080057600080fd5b505af1158015610814573d6000803e3d6000fd5b50505050806001600160a01b031663046f7da26040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561085357600080fd5b505af1158015610867573d6000803e3d6000fd5b50506040805163f2fde38b60e01b815233600482015290516001600160a01b038516935063f2fde38b9250602480830192600092919082900301818387803b1580156108b257600080fd5b505af11580156108c6573d6000803e3d6000fd5b50505050336001600160a01b03167f6867cd3ddf1a2f1ce80923be4ebe91b6cdab90ef2266e1b5c38c3e509ad0d8f8828a8a8a8a8a8960405180886001600160a01b03166001600160a01b03168152602001876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018467ffffffffffffffff1667ffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600083820152604051601f909101601f19169092018290039a509098505050505050505050a2979650505050505050565b816109ed57600354600b906109d2906001600160a01b031683610c54565b81546001810183556000928352602090922090910155610a81565b818060019003925050600060098381548110610a0557fe5b90600052602060002001549050600a8381548110610a1f57fe5b600091825260208083209091018054600181018255908352908220018390555b81811015610a7e57610a7684610a718560048881548110610a5c57fe5b9060005260206000200154856001901b610c98565b6109b4565b600101610a3f565b50505b5050565b60006060826040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610aca578181015183820152602001610ab2565b50505050905090810190601f168015610af75780820380516001836020036101000a031916815260200191505b5060408051601f1981840381018252928252602080820180516001600160e01b03166352e831dd60e01b17905281518351606382018082526082909201909516850190910190925295506060945090925090508015610b5d576020820181803883390190505b507f3d3d606380380380913d393d73bebebebebebebebebebebebebebebebebebebe6020820152600160601b308102602d8301527f5af4602a57600080fd5b602d8060366000396000f3363d3d373d3d3d363d73be6041830152860260608201526e5af43d82803e903d91602b57fd5bf360881b6074820152905060005b8251811015610c2957828181518110610bf057fe5b602001015160f81c60f81b828260630181518110610c0a57fe5b60200101906001600160f81b031916908160001a905350600101610bdb565b5080516020820181816000f0945050506001600160a01b038316610c4c57600080fd5b505092915050565b6040805160609390931b6bffffffffffffffffffffffff19166020808501919091526034808501939093528151808503909301835260549093019052805191012090565b6040805160208082018590528183018490528251808303840181526060909201909252805191012060009060ff81901c151582805b6000805160206118728339815191526001850893506000805160206118728339815191526003600080516020611872833981519152808788098709089050610d1481610fc7565b9150806000805160206118728339815191528384091415610ccd57828015610d3d575060028206155b80610d54575082158015610d545750600282066001145b15610d6d57816000805160206118728339815191520391505b878015610fa45760fe81901c151593506001600160fe1b031660008051602061187283398151915260036000805160206118728339815191528084850984090891506000610dba83610fc7565b9050848015610dca575060028106155b80610de1575084158015610de15750600281066001145b15610df757600080516020611872833981519152035b8260008051602061187283398151915282830914610e5c576040805162461bcd60e51b815260206004820152601c60248201527f696e76616c696420706172656e7420636f6c6c656374696f6e20494400000000604482015290519081900360640190fd5b6000606060066001600160a01b031688878686604051602001808581526020018481526020018381526020018281526020019450505050506040516020818303038152906040526040518082805190602001908083835b60208310610ed25780518252601f199092019160209182019101610eb3565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610f32576040519150601f19603f3d011682016040523d82523d6000602084013e610f37565b606091505b509150915081610f7d576040805162461bcd60e51b815260206004820152600c60248201526b1958d859190819985a5b195960a21b604482015290519081900360640190fd5b808060200190516040811015610f9257600080fd5b50805160209091015190985095505050505b6002830660011415610fba57600160fe1b851894505b5092979650505050505050565b6000600080516020611872833981519152808380099150808283098181820990508181840992508183850993508184840992508183840990508181820982818309905082818209905082818209905082818309915082828609945082858609915082828309915082828509935082848509915082828309915082828309915082828509915082828609945082858609915082828309915082828309915082828609915082828509935082848609945082858609915082828309915082828509935082848509915082828309905082818209905082818209905082818309915082828609945082858509935082848509915082828309915082828309915082828609945082858609915082828309915082828609915082828309915082828309915082828609915082828509935082848509915082828309905082818209905082818309905082818509905082818209905082818209905082818209905082818209905082818309915082828609945082858609915082828609915082828509935082848509915082828509915082828309915082828309905082818309905082818209838182099050838182099050838182099050838182099050838183099150508281830991508282860994508285850993508284850991508282860994508285850993508284860994508285850993508284860994508285860991508282860991508282830991508282850993508284850991508282830991508282860994508285850993508284850991508282850991508282860994508285850993508284860994508285850993508284850991508282830991508282850991508282860994508285860991508282860991508282850993508284860994508285850993508284860994508285850993508284850991508282850991508282830991508282860994508285850993508284850991508282850991508282830991508282860994508285860991508282830990508281820990508281830990508281860990508281820990508281820990508281820990508281820990508281830991508282850993508284860994508285850993508284860994508285860991508282860991508282830991508282830991508282830991508282860991508282850993508284850991508282850991508282830991508282860994508285860991508282860991508282850993508284860994508285860991508282830991508282850993508284860994508285860991508282850993508284860994508285850993508284850991508282850991508282860994508285850993508284850991508282850991508282830991508282830991508282860994508285860991508282830991508282830991508282860991508282850993508284860994508285860991508282860990508281820990508281820990508281830991508282850993508284850991508282860994508285850993508284860994508285850993508284860994508285850993508284850991508282850990508281850991508282830991508282830991508282820991505081818509935081848409925081838509935081848409925081838509935081848509905081818509905081818409925050808284099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808383099392505050565b8280548282559060005260206000209081019282156117a7579160200282015b828111156117a757825182559160200191906001019061178c565b506117b3929150611810565b5090565b828054828255906000526020600020908101928215611804579160200282015b8281111561180457825180516117f491849160209091019061176c565b50916020019190600101906117d7565b506117b392915061182d565b61182a91905b808211156117b35760008155600101611816565b90565b61182a91905b808211156117b35760006118478282611850565b50600101611833565b508054600082559060005260206000209081019061186e9190611810565b5056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a265627a7a72305820d89c4209317426c1257b479a2e5be5a184c8e1af5db4c5c7905ac9686cfede8c64736f6c634300050a003260806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36200007c7f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03620000b616565b620000b07f4e2312e0000000000000000000000000000000000000000000000000000000006001600160e01b03620000b616565b62000188565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200014857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600160208190526040909120805460ff19169091179055565b61264380620001986000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063b0011509116100de578063d8c55af711610097578063e7f3378911610071578063e7f33789146105ae578063f23a6e61146105d5578063f2fde38b14610668578063fbde47f61461068e5761018e565b8063d8c55af714610564578063dd83bad214610581578063ddca3f43146105895761018e565b8063b0011509146103a7578063b2016bd4146103c4578063b20f8e7f146103cc578063bc197c81146103ec578063c040e6b814610530578063cb4c86b71461055c5761018e565b8063715018a61161014b57806387f39a5c1161012557806387f39a5c146103725780638da5cb5b1461038f5780638f32d59b1461039757806393e59dc11461039f5761018e565b8063715018a6146102c1578063782d085b146102c95780638456cb591461036a5761018e565b806301ffc9a714610193578063046f7da2146101ce57806305be8b2c146101d857806315bd7611146101fc57806343d726d6146102b1578063476343ee146102b9575b600080fd5b6101ba600480360360208110156101a957600080fd5b50356001600160e01b031916610696565b604080519115158252519081900360200190f35b6101d66106b5565b005b6101e0610750565b604080516001600160a01b039092168252519081900360200190f35b61029f6004803603604081101561021257600080fd5b810190602081018135600160201b81111561022c57600080fd5b82018360208201111561023e57600080fd5b803590602001918460208302840111600160201b8311171561025f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550509135925061075f915050565b60408051918252519081900360200190f35b6101d6610e97565b61029f6110bf565b6101d6611256565b61029f600480360360208110156102df57600080fd5b810190602081018135600160201b8111156102f957600080fd5b82018360208201111561030b57600080fd5b803590602001918460208302840111600160201b8311171561032c57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506112e7945050505050565b6101d66115e5565b6101d66004803603602081101561038857600080fd5b5035611683565b6101e06119ba565b6101ba6119c9565b6101e06119da565b61029f600480360360208110156103bd57600080fd5b50356119ee565b6101e0611a0e565b61029f600480360360208110156103e257600080fd5b503560ff16611a1d565b610513600480360360a081101561040257600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561043557600080fd5b82018360208201111561044757600080fd5b803590602001918460208302840111600160201b8311171561046857600080fd5b919390929091602081019035600160201b81111561048557600080fd5b82018360208201111561049757600080fd5b803590602001918460208302840111600160201b831117156104b857600080fd5b919390929091602081019035600160201b8111156104d557600080fd5b8201836020820111156104e757600080fd5b803590602001918460018302840111600160201b8311171561050857600080fd5b509092509050611bfb565b604080516001600160e01b03199092168252519081900360200190f35b610538611c2c565b6040518082600281111561054857fe5b60ff16815260200191505060405180910390f35b61029f611c35565b61029f6004803603602081101561057a57600080fd5b5035611c3b565b61029f611c59565b610591611c5f565b6040805167ffffffffffffffff9092168252519081900360200190f35b6101d6600480360360208110156105c457600080fd5b503567ffffffffffffffff16611c6f565b610513600480360360a08110156105eb57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561062a57600080fd5b82018360208201111561063c57600080fd5b803590602001918460018302840111600160201b8311171561065d57600080fd5b509092509050611d31565b6101d66004803603602081101561067e57600080fd5b50356001600160a01b0316611d60565b610591611db3565b6001600160e01b03191660009081526001602052604090205460ff1690565b6106bd6119c9565b6106fc576040805162461bcd60e51b815260206004820181905260248201526000805160206125cc833981519152604482015290519081900360640190fd5b60018060085460ff16600281111561071057fe5b1461071a57600080fd5b6008805460ff191690556040517fb0cf596e1402e50b88a6d1097918e48922e4a2878ece11d7bb51b5d81cf6c17890600090a150565b6002546001600160a01b031681565b6000808060085460ff16600281111561077457fe5b1461077e57600080fd5b60085461010090046001600160a01b03161580610812575060085460408051633af32abf60e01b815233600482015290516101009092046001600160a01b031691633af32abf91602480820192602092909190829003018186803b1580156107e557600080fd5b505afa1580156107f9573d6000803e3d6000fd5b505050506040513d602081101561080f57600080fd5b50515b61084d5760405162461bcd60e51b815260040180806020018281038252602d81526020018061259f602d913960400191505060405180910390fd5b60055484511461085c57600080fd5b6000610867856112e7565b90506000808212156108865761087f826000036119ee565b9050610892565b61088f826119ee565b90505b60008112156108a057600080fd5b6108b0828263ffffffff611dbf16565b935084158015906108c15750848413155b806108ca575084155b6108d357600080fd5b6000821315610a0157600354604080516323b872dd60e01b81523360048201523060248201526044810187905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561093657600080fd5b505af115801561094a573d6000803e3d6000fd5b505050506040513d602081101561096057600080fd5b505180156109ef57506003546002546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018690529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156109c257600080fd5b505af11580156109d6573d6000803e3d6000fd5b505050506040513d60208110156109ec57600080fd5b50515b6109f857600080fd5b610a0182611df4565b60008090506060600554604051908082528060200260200182016040528015610a34578160200160208202803883390190505b50905060005b600554811015610a9c576000898281518110610a5257fe5b60200260200101511215610a945760019250888181518110610a7057fe5b6020026020010151600003828281518110610a8757fe5b6020026020010181815250505b600101610a3a565b508115610bb557600254604051631759616b60e11b81523360048201818152306024840181905260a060448501908152600b805460a487018190526001600160a01b0390971696632eb2c2d696939491938993916064820191608481019160c49091019087908015610b2d57602002820191906000526020600020905b815481526020019060010190808311610b19575b50508481038352855181528551602091820191808801910280838360005b83811015610b63578181015183820152602001610b4b565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b158015610b9c57600080fd5b505af1158015610bb0573d6000803e3d6000fd5b505050505b6000841215610bca57610bca84600003611f7f565b336001600160a01b03167fda7ff5556ce7ecfcf06296f03426e8c02a7305b85cfd88816a32f7f4969051778986866040518080602001848152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610c44578181015183820152602001610c2c565b5050505090500194505050505060405180910390a260009150815b600554811015610cdd576000898281518110610c7757fe5b60200260200101511315610cba5760019250888181518110610c9557fe5b6020026020010151828281518110610ca957fe5b602002602001018181525050610cd5565b6000828281518110610cc857fe5b6020026020010181815250505b600101610c5f565b508115610df657600254604051631759616b60e11b81523060048201818152336024840181905260a060448501908152600b805460a487018190526001600160a01b0390971696632eb2c2d696939491938993916064820191608481019160c49091019087908015610d6e57602002820191906000526020600020905b815481526020019060010190808311610d5a575b50508481038352855181528551602091820191808801910280838360005b83811015610da4578181015183820152602001610d8c565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b158015610ddd57600080fd5b505af1158015610df1573d6000803e3d6000fd5b505050505b6000861215610e8c576003546040805163a9059cbb60e01b81523360048201526000898103602483015291516001600160a01b039093169263a9059cbb92604480840193602093929083900390910190829087803b158015610e5757600080fd5b505af1158015610e6b573d6000803e3d6000fd5b505050506040513d6020811015610e8157600080fd5b5051610e8c57600080fd5b505050505092915050565b610e9f6119c9565b610ede576040805162461bcd60e51b815260206004820181905260248201526000805160206125cc833981519152604482015290519081900360640190fd5b600060085460ff166002811115610ef157fe5b1480610f0d5750600160085460ff166002811115610f0b57fe5b145b610f485760405162461bcd60e51b81526004018080602001828103825260238152602001806125ec6023913960400191505060405180910390fd5b60005b600554811015611086576000610f60826120f6565b6002549091506001600160a01b031663f242432a30610f7d6119ba565b60025460408051627eeac760e11b815230600482015260248101889052905187926001600160a01b03169162fdd58e916044808301926020929190829003018186803b158015610fcc57600080fd5b505afa158015610fe0573d6000803e3d6000fd5b505050506040513d6020811015610ff657600080fd5b5051604080516001600160e01b031960e088901b1681526001600160a01b0395861660048201529390941660248401526044830191909152606482015260a06084820152600060a48201819052915160e4808301939282900301818387803b15801561106157600080fd5b505af1158015611075573d6000803e3d6000fd5b505060019093019250610f4b915050565b506008805460ff191660021790556040517f6e18b1b14477b5922c6efa82206ed0e3b73c2500e8d1528c9a6e17554ea1255490600090a1565b60006110c96119c9565b611108576040805162461bcd60e51b815260206004820181905260248201526000805160206125cc833981519152604482015290519081900360640190fd5b600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561115357600080fd5b505afa158015611167573d6000803e3d6000fd5b505050506040513d602081101561117d57600080fd5b50516003549091506001600160a01b031663a9059cbb61119b6119ba565b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156111eb57600080fd5b505af11580156111ff573d6000803e3d6000fd5b505050506040513d602081101561121557600080fd5b505161122057600080fd5b6040805182815290517fce1d35d26fbf6b3cc5cd924de10b5a52b08e484129ea7d93abc48d739fffe5b99181900360200190a190565b61125e6119c9565b61129d576040805162461bcd60e51b815260206004820181905260248201526000805160206125cc833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006005548251146112f857600080fd5b6060600554604051908082528060200260200182016040528015611326578160200160208202803883390190505b50905060005b600554811015611422576002546000906001600160a01b031662fdd58e30611353856120f6565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b1580156113a057600080fd5b505afa1580156113b4573d6000803e3d6000fd5b505050506040513d60208110156113ca57600080fd5b5051905060008112156113dc57600080fd5b611402818684815181106113ec57fe5b602002602001015161211790919063ffffffff16565b83838151811061140e57fe5b60209081029190910101525060010161132c565b50600073__Fixed192x64Math_______________________63137bf798600160401b6005540260016040518363ffffffff1660e01b81526004018083815260200182600281111561146f57fe5b60ff1681526020019250505060206040518083038186803b15801561149357600080fd5b505af41580156114a7573d6000803e3d6000fd5b505050506040513d60208110156114bd57600080fd5b505190506000806114d18385836001612145565b506040805163026f7ef360e31b81526004810184905260016024820152905192945090925073__Fixed192x64Math_______________________9163137bf79891604480820192602092909190829003018186803b15801561153257600080fd5b505af4158015611546573d6000803e3d6000fd5b505050506040513d602081101561155c57600080fd5b50519450611570858263ffffffff611dbf16565b6007549095506115a3908461158f88600160401b63ffffffff61237516565b8161159657fe5b059063ffffffff61237516565b94506000851315806115bc575084600160401b80820502145b156115cf57600160401b850594506115dc565b600160401b850560010194505b50505050919050565b6115ed6119c9565b61162c576040805162461bcd60e51b815260206004820181905260248201526000805160206125cc833981519152604482015290519081900360640190fd5b60008060085460ff16600281111561164057fe5b1461164a57600080fd5b6008805460ff191660011790556040517fbb11914e7a395f00cf0920fe85f50088bd8d7681529fb0bd3c27ccb45a8bcd8f90600090a150565b61168b6119c9565b6116ca576040805162461bcd60e51b815260206004820181905260248201526000805160206125cc833981519152604482015290519081900360640190fd5b60018060085460ff1660028111156116de57fe5b146116e857600080fd5b8161173a576040805162461bcd60e51b815260206004820152601f60248201527f66756e64696e67206368616e6765206d757374206265206e6f6e2d7a65726f00604482015290519081900360640190fd5b60008213156118b257600354604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561179d57600080fd5b505af11580156117b1573d6000803e3d6000fd5b505050506040513d60208110156117c757600080fd5b5051801561185657506003546002546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018690529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561182957600080fd5b505af115801561183d573d6000803e3d6000fd5b505050506040513d602081101561185357600080fd5b50515b61185f57600080fd5b61186882611df4565b60075461187b908363ffffffff6123b616565b6007556040805183815290517fc55e9a33fb8b1de5318b5c7b96a32937e54006c82000b2c468ed1fb9f73f67999181900360200190a15b60008212156119b6576118c782600003611f7f565b6007546118de90600084900363ffffffff61241716565b6007556003546001600160a01b031663a9059cbb6118fa6119ba565b846000036040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561194d57600080fd5b505af1158015611961573d6000803e3d6000fd5b505050506040513d602081101561197757600080fd5b505161198257600080fd5b6040805183815290517fc55e9a33fb8b1de5318b5c7b96a32937e54006c82000b2c468ed1fb9f73f67999181900360200190a15b5050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60085461010090046001600160a01b031681565b600654670de0b6b3a764000067ffffffffffffffff909116919091020490565b6003546001600160a01b031681565b60006060600554604051908082528060200260200182016040528015611a4d578160200160208202803883390190505b50905060005b600554811015611b27576002546000906001600160a01b031662fdd58e30611a7a856120f6565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b158015611ac757600080fd5b505afa158015611adb573d6000803e3d6000fd5b505050506040513d6020811015611af157600080fd5b505160009081039150811315611b0657600080fd5b80838381518110611b1357fe5b602090810291909101015250600101611a53565b50600073__Fixed192x64Math_______________________63137bf798600160401b84510260026040518363ffffffff1660e01b815260040180838152602001826002811115611b7357fe5b60ff1681526020019250505060206040518083038186803b158015611b9757600080fd5b505af4158015611bab573d6000803e3d6000fd5b505050506040513d6020811015611bc157600080fd5b50519050600080611bd58385886002612145565b9250509150600160401b8281611be757fe5b048181611bf057fe5b049695505050505050565b60006001600160a01b038916301415611c1c575063bc197c8160e01b611c20565b5060005b98975050505050505050565b60085460ff1681565b60075481565b60048181548110611c4857fe5b600091825260209091200154905081565b60055481565b60065467ffffffffffffffff1681565b611c776119c9565b611cb6576040805162461bcd60e51b815260206004820181905260248201526000805160206125cc833981519152604482015290519081900360640190fd5b60018060085460ff166002811115611cca57fe5b14611cd457600080fd5b6006805467ffffffffffffffff191667ffffffffffffffff848116919091179182905560408051929091168252517f43acfe4f4a14c012959016586aee3b318a0a30e17bb8edae05a58d46c80b4199916020908290030190a15050565b60006001600160a01b038716301415611d52575063f23a6e6160e01b611d56565b5060005b9695505050505050565b611d686119c9565b611da7576040805162461bcd60e51b815260206004820181905260248201526000805160206125cc833981519152604482015290519081900360640190fd5b611db081612474565b50565b670de0b6b3a764000081565b81810160008212801590611dd35750828112155b80611de85750600082128015611de857508281125b611dee57fe5b92915050565b600454600019015b600081126119b6576060611e2660098381548110611e1657fe5b9060005260206000200154612514565b905060005b600a8381548110611e3857fe5b600091825260209091200154811015611f7457600254600354600a80546001600160a01b03938416936372ce42759316919087908110611e7457fe5b906000526020600020018481548110611e8957fe5b906000526020600020015460048781548110611ea157fe5b906000526020600020015486896040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b0316815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015611f27578181015183820152602001611f0f565b505050509050019650505050505050600060405180830381600087803b158015611f5057600080fd5b505af1158015611f64573d6000803e3d6000fd5b505060019092019150611e2b9050565b505060001901611dfc565b60005b6004548110156119b6576060611f9e60098381548110611e1657fe5b905060005b600a8381548110611fb057fe5b6000918252602090912001548110156120ec57600254600354600a80546001600160a01b0393841693639e7212ad9316919087908110611fec57fe5b90600052602060002001848154811061200157fe5b90600052602060002001546004878154811061201957fe5b906000526020600020015486896040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b0316815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561209f578181015183820152602001612087565b505050509050019650505050505050600060405180830381600087803b1580156120c857600080fd5b505af11580156120dc573d6000803e3d6000fd5b505060019092019150611fa39050565b5050600101611f82565b6000600b828154811061210557fe5b90600052602060002001549050919050565b8082036000821280159061212b5750828113155b80611de85750600082128015611de85750828113611dee57fe5b600080600080871215801561215d5750600060075412155b61216657600080fd5b6040516333304e0560e21b815260206004820181815288516024840152885173__Fixed192x64Math_______________________9363ccc13814938b9392839260440191808601910280838360005b838110156121cd5781810151838201526020016121b5565b505050509050019250505060206040518083038186803b1580156121f057600080fd5b505af4158015612204573d6000803e3d6000fd5b505050506040513d602081101561221a57600080fd5b5051600754909250612232838963ffffffff61237516565b8161223957fe5b0591506122558268b8000000000000000063ffffffff61211716565b91506000805b87518160ff1610156123695773__Fixed192x64Math_______________________631d5801236122c5866007546122b18e8e8860ff168151811061229b57fe5b602002602001015161237590919063ffffffff16565b816122b857fe5b059063ffffffff61211716565b886040518363ffffffff1660e01b8152600401808381526020018260028111156122eb57fe5b60ff1681526020019250505060206040518083038186803b15801561230f57600080fd5b505af4158015612323573d6000803e3d6000fd5b505050506040513d602081101561233957600080fd5b5051915060ff818116908816141561234f578192505b61235f858363ffffffff6123b616565b945060010161225b565b50509450945094915050565b60008261238457506000611dee565b508181026000198314158061239d5750600160ff1b8214155b8015611de85750818382816123ae57fe5b0514611dee57fe5b600082820183811015612410576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008282111561246e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b0381166124b95760405162461bcd60e51b81526004018080602001828103825260268152602001806125796026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606081604051908082528060200260200182016040528015612540578160200160208202803883390190505b50905060005b8281101561257257806001901b82828151811061255f57fe5b6020908102919091010152600101612546565b5091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573736f6e6c792077686974656c6973746564207573657273206d61792063616c6c20746869732066756e6374696f6e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657254686973204d61726b65742068617320616c7265616479206265656e20636c6f736564a265627a7a7230582036ea4865bbf07afffbbe4d8db2fb315a60ae3974144e097678f46c81166a119b64736f6c634300050a0032","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806312b4d20c1461004657806352e831dd1461006a5780637c8b2c07146100dc575b600080fd5b61004e610184565b604080516001600160a01b039092168252519081900360200190f35b6100da6004803603602081101561008057600080fd5b81019060208101813564010000000081111561009b57600080fd5b8201836020820111156100ad57600080fd5b803590602001918460018302840111640100000000831117156100cf57600080fd5b509092509050610193565b005b61004e600480360360c08110156100f257600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561012657600080fd5b82018360208201111561013857600080fd5b8035906020019184602083028401116401000000008311171561015a57600080fd5b919350915067ffffffffffffffff813516906001600160a01b0360208201351690604001356105db565b600c546001600160a01b031681565b6000806060600080868660a08110156101ab57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184602083028401116401000000008311171561021357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092018290525080546001600160a01b03191633178082556040519a9f50989d50939b505067ffffffffffffffff8435169950506001600160a01b0360209093013583169750509316937f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09250839150a3600160208190527fb45820386466a8e01597d6e1efaf8f11ba4467972de5ca6c1f8aa3544ac2888e805460ff199081168317909155630271189760e51b6000527f2b11aca8aedb4d95239fb39fb7039ebbb812f8d66e5d5efc27f004162309980d805490911690911790556001600160a01b038516158015906103405750670de0b6b3a764000067ffffffffffffffff8316105b61034957600080fd5b600280546001600160a01b038088166001600160a01b0319928316179092556003805492871692909116919091179055825161038c90600490602086019061176c565b506006805467ffffffffffffffff191667ffffffffffffffff841617905560088054610100600160a81b0319166101006001600160a01b0384160217905560016005556004546040805182815260208084028201019091529080156103fb578160200160208202803883390190505b5080516104109160099160209091019061176c565b5060005b6004548110156104dd57600254600480546000926001600160a01b03169163d42dc0c2918590811061044257fe5b90600052602060002001546040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561048157600080fd5b505afa158015610495573d6000803e3d6000fd5b505050506040513d60208110156104ab57600080fd5b50516005805482029055600980549192508291849081106104c857fe5b60009182526020909120015550600101610414565b50600160055411610535576040805162461bcd60e51b815260206004820152601860248201527f636f6e646974696f6e73206d7573742062652076616c69640000000000000000604482015290519081900360640190fd5b60045460408051828152602080840282010190915290801561056b57816020015b60608152602001906001900390816105565790505b50805161058091600a916020909101906117b7565b5060045461058f9060006109b4565b6008805460ff1916600117905560075460408051918252517f631ac92e0a879a687b1bd27a7dcbf3ec0be307aa0a1046c0df4109be02c49307916020908290030190a150505050505050565b60006106b4600c60009054906101000a90046001600160a01b031689898989898960405160200180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018467ffffffffffffffff1667ffffffffffffffff168152602001836001600160a01b03166001600160a01b031681526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052610a85565b604080516323b872dd60e01b81523360048201523060248201526044810185905290519192506001600160a01b038916916323b872dd916064808201926020929091908290030181600087803b15801561070d57600080fd5b505af1158015610721573d6000803e3d6000fd5b505050506040513d602081101561073757600080fd5b50506040805163095ea7b360e01b81526001600160a01b0383811660048301526024820185905291519189169163095ea7b3916044808201926020929091908290030181600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b505050506040513d60208110156107b657600080fd5b5050604080516321fce69760e21b81526004810184905290516001600160a01b038316916387f39a5c91602480830192600092919082900301818387803b15801561080057600080fd5b505af1158015610814573d6000803e3d6000fd5b50505050806001600160a01b031663046f7da26040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561085357600080fd5b505af1158015610867573d6000803e3d6000fd5b50506040805163f2fde38b60e01b815233600482015290516001600160a01b038516935063f2fde38b9250602480830192600092919082900301818387803b1580156108b257600080fd5b505af11580156108c6573d6000803e3d6000fd5b50505050336001600160a01b03167f6867cd3ddf1a2f1ce80923be4ebe91b6cdab90ef2266e1b5c38c3e509ad0d8f8828a8a8a8a8a8960405180886001600160a01b03166001600160a01b03168152602001876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018467ffffffffffffffff1667ffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600083820152604051601f909101601f19169092018290039a509098505050505050505050a2979650505050505050565b816109ed57600354600b906109d2906001600160a01b031683610c54565b81546001810183556000928352602090922090910155610a81565b818060019003925050600060098381548110610a0557fe5b90600052602060002001549050600a8381548110610a1f57fe5b600091825260208083209091018054600181018255908352908220018390555b81811015610a7e57610a7684610a718560048881548110610a5c57fe5b9060005260206000200154856001901b610c98565b6109b4565b600101610a3f565b50505b5050565b60006060826040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610aca578181015183820152602001610ab2565b50505050905090810190601f168015610af75780820380516001836020036101000a031916815260200191505b5060408051601f1981840381018252928252602080820180516001600160e01b03166352e831dd60e01b17905281518351606382018082526082909201909516850190910190925295506060945090925090508015610b5d576020820181803883390190505b507f3d3d606380380380913d393d73bebebebebebebebebebebebebebebebebebebe6020820152600160601b308102602d8301527f5af4602a57600080fd5b602d8060366000396000f3363d3d373d3d3d363d73be6041830152860260608201526e5af43d82803e903d91602b57fd5bf360881b6074820152905060005b8251811015610c2957828181518110610bf057fe5b602001015160f81c60f81b828260630181518110610c0a57fe5b60200101906001600160f81b031916908160001a905350600101610bdb565b5080516020820181816000f0945050506001600160a01b038316610c4c57600080fd5b505092915050565b6040805160609390931b6bffffffffffffffffffffffff19166020808501919091526034808501939093528151808503909301835260549093019052805191012090565b6040805160208082018590528183018490528251808303840181526060909201909252805191012060009060ff81901c151582805b6000805160206118728339815191526001850893506000805160206118728339815191526003600080516020611872833981519152808788098709089050610d1481610fc7565b9150806000805160206118728339815191528384091415610ccd57828015610d3d575060028206155b80610d54575082158015610d545750600282066001145b15610d6d57816000805160206118728339815191520391505b878015610fa45760fe81901c151593506001600160fe1b031660008051602061187283398151915260036000805160206118728339815191528084850984090891506000610dba83610fc7565b9050848015610dca575060028106155b80610de1575084158015610de15750600281066001145b15610df757600080516020611872833981519152035b8260008051602061187283398151915282830914610e5c576040805162461bcd60e51b815260206004820152601c60248201527f696e76616c696420706172656e7420636f6c6c656374696f6e20494400000000604482015290519081900360640190fd5b6000606060066001600160a01b031688878686604051602001808581526020018481526020018381526020018281526020019450505050506040516020818303038152906040526040518082805190602001908083835b60208310610ed25780518252601f199092019160209182019101610eb3565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610f32576040519150601f19603f3d011682016040523d82523d6000602084013e610f37565b606091505b509150915081610f7d576040805162461bcd60e51b815260206004820152600c60248201526b1958d859190819985a5b195960a21b604482015290519081900360640190fd5b808060200190516040811015610f9257600080fd5b50805160209091015190985095505050505b6002830660011415610fba57600160fe1b851894505b5092979650505050505050565b6000600080516020611872833981519152808380099150808283098181820990508181840992508183850993508184840992508183840990508181820982818309905082818209905082818209905082818309915082828609945082858609915082828309915082828509935082848509915082828309915082828309915082828509915082828609945082858609915082828309915082828309915082828609915082828509935082848609945082858609915082828309915082828509935082848509915082828309905082818209905082818209905082818309915082828609945082858509935082848509915082828309915082828309915082828609945082858609915082828309915082828609915082828309915082828309915082828609915082828509935082848509915082828309905082818209905082818309905082818509905082818209905082818209905082818209905082818209905082818309915082828609945082858609915082828609915082828509935082848509915082828509915082828309915082828309905082818309905082818209838182099050838182099050838182099050838182099050838183099150508281830991508282860994508285850993508284850991508282860994508285850993508284860994508285850993508284860994508285860991508282860991508282830991508282850993508284850991508282830991508282860994508285850993508284850991508282850991508282860994508285850993508284860994508285850993508284850991508282830991508282850991508282860994508285860991508282860991508282850993508284860994508285850993508284860994508285850993508284850991508282850991508282830991508282860994508285850993508284850991508282850991508282830991508282860994508285860991508282830990508281820990508281830990508281860990508281820990508281820990508281820990508281820990508281830991508282850993508284860994508285850993508284860994508285860991508282860991508282830991508282830991508282830991508282860991508282850993508284850991508282850991508282830991508282860994508285860991508282860991508282850993508284860994508285860991508282830991508282850993508284860994508285860991508282850993508284860994508285850993508284850991508282850991508282860994508285850993508284850991508282850991508282830991508282830991508282860994508285860991508282830991508282830991508282860991508282850993508284860994508285860991508282860990508281820990508281820990508281830991508282850993508284850991508282860994508285850993508284860994508285850993508284860994508285850993508284850991508282850990508281850991508282830991508282830991508282820991505081818509935081848409925081838509935081848409925081838509935081848509905081818509905081818409925050808284099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808383099392505050565b8280548282559060005260206000209081019282156117a7579160200282015b828111156117a757825182559160200191906001019061178c565b506117b3929150611810565b5090565b828054828255906000526020600020908101928215611804579160200282015b8281111561180457825180516117f491849160209091019061176c565b50916020019190600101906117d7565b506117b392915061182d565b61182a91905b808211156117b35760008155600101611816565b90565b61182a91905b808211156117b35760006118478282611850565b50600101611833565b508054600082559060005260206000209081019061186e9190611810565b5056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a265627a7a72305820d89c4209317426c1257b479a2e5be5a184c8e1af5db4c5c7905ac9686cfede8c64736f6c634300050a0032","sourceMap":"1457:3577:6:-;;;1789:82;8:9:-1;5:2;;;30:1;27;20:12;5:2;1789:82:6;1843:21;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;1820:20:6;:44;;-1:-1:-1;;;;;;1820:44:6;-1:-1:-1;;;;;1820:44:6;;;;;;;;;;1457:3577;;;;;;;;;;:::o;:::-;;;;;;;","deployedSourceMap":"1457:3577:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1457:3577:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1739:43;;;:::i;:::-;;;;-1:-1:-1;;;;;1739:43:6;;;;;;;;;;;;;;1877:1576;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1877:1576:6;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1877:1576:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1877:1576:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1877:1576:6;;-1:-1:-1;1877:1576:6;-1:-1:-1;1877:1576:6;:::i;:::-;;4229:803;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;4229:803:6;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;4229:803:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4229:803:6;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4229:803:6;;-1:-1:-1;4229:803:6;-1:-1:-1;4229:803:6;;;;;-1:-1:-1;;;;;4229:803:6;;;;;;;;;;:::i;1739:43::-;;;-1:-1:-1;;;;;1739:43:6;;:::o;1877:1576::-;1961:27;2002:23;2039:30;2083:11;2108:20;2152:8;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;2141:79:6;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2141:79:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2141:79:6;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2141:79:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;2231:19:6;;-1:-1:-1;;;;;;2231:19:6;2240:10;2231:19;;;;2141:79;2265:40;1947:273;;-1:-1:-1;1947:273:6;;-1:-1:-1;2141:79:6;;-1:-1:-1;;2141:79:6;;;;;-1:-1:-1;;;;;;;2141:79:6;;;;;;;;-1:-1:-1;;2298:6:6;;;2265:40;;-1:-1:-1;99:1;;-1:-1;2265:40:6;2361:4;2316:42;;;;;:49;;-1:-1:-1;;2316:49:6;;;;;;;;-1:-1:-1;;;2316:42:6;2375:164;;:171;;;;;;;;;;-1:-1:-1;;;;;2592:32:6;;;;;;:52;;-1:-1:-1;949:6:6;2628:16;;;;2592:52;2584:61;;;;;;2655:8;:20;;-1:-1:-1;;;;;2655:20:6;;;-1:-1:-1;;;;;;2655:20:6;;;;;;;2685:15;:34;;;;;;;;;;;;;;;2729:28;;;;:12;;:28;;;;;:::i;:::-;-1:-1:-1;2767:3:6;:10;;-1:-1:-1;;2767:10:6;;;;;;;2787:9;:22;;-1:-1:-1;;;;;;2787:22:6;2767:10;-1:-1:-1;;;;;2787:22:6;;;;;;-1:-1:-1;2820:22:6;:26;2887:12;:19;2876:31;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;2876:31:6;-1:-1:-1;2856:51:6;;;;:17;;:51;;;;;;:::i;:::-;-1:-1:-1;2922:6:6;2917:250;2938:12;:19;2934:23;;2917:250;;;3002:8;;3031:12;:15;;2978:21;;-1:-1:-1;;;;;3002:8:6;;:28;;3044:1;;3031:15;;;;;;;;;;;;;;3002:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3002:45:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3002:45:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3002:45:6;3061:22;:42;;;;;;3117:17;:20;;3002:45;;-1:-1:-1;3002:45:6;;3135:1;;3117:20;;;;;;;;;;;;;;;:39;-1:-1:-1;2959:3:6;;2917:250;;;;3209:1;3184:22;;:26;3176:63;;;;;-1:-1:-1;;;3176:63:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;3282:12;:19;3266:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3250:52:6;;;;:13;;:52;;;;;;:::i;:::-;-1:-1:-1;3349:12:6;:19;3312:69;;3378:1;3312:36;:69::i;:::-;3392:5;:20;;-1:-1:-1;;3392:20:6;3400:12;3392:20;;;3438:7;;3427:19;;;;;;;;;;;;;;;;;1877:1576;;;;;;;:::o;4229:803::-;4426:31;4507:111;4527:20;;;;;;;;;-1:-1:-1;;;;;4527:20:6;4561:8;4571:15;4588:12;;4602:3;4607:9;4550:67;;;;;;-1:-1:-1;;;;;4550:67:6;-1:-1:-1;;;;;4550:67:6;;;;;;-1:-1:-1;;;;;4550:67:6;-1:-1:-1;;;;;4550:67:6;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4550:67:6;-1:-1:-1;;;;;4550:67:6;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4550:67:6;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4550:67:6;;;4507:11;:111::i;:::-;4629:64;;;-1:-1:-1;;;4629:64:6;;4658:10;4629:64;;;;4678:4;4629:64;;;;;;;;;;;;4473:146;;-1:-1:-1;;;;;;4629:28:6;;;;;:64;;;;;;;;;;;;;;;-1:-1:-1;4629:28:6;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;4629:64:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4629:64:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4703:58:6;;;-1:-1:-1;;;4703:58:6;;-1:-1:-1;;;;;4703:58:6;;;;;;;;;;;;;;;:23;;;;;;:58;;;;;4629:64;;4703:58;;;;;;;;-1:-1:-1;4703:23:6;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;4703:58:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4703:58:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4771:43:6;;;-1:-1:-1;;;4771:43:6;;;;;;;;;;-1:-1:-1;;;;;4771:29:6;;;;;:43;;;;;-1:-1:-1;;4771:43:6;;;;;;;-1:-1:-1;4771:29:6;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;4771:43:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4771:43:6;;;;4824:15;-1:-1:-1;;;;;4824:22:6;;:24;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4824:24:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4858:45:6;;;-1:-1:-1;;;4858:45:6;;4892:10;4858:45;;;;;;-1:-1:-1;;;;;4858:33:6;;;-1:-1:-1;4858:33:6;;-1:-1:-1;4858:45:6;;;;;-1:-1:-1;;4858:45:6;;;;;;;-1:-1:-1;4858:33:6;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;4858:45:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4858:45:6;;;;4942:10;-1:-1:-1;;;;;4918:107:6;;4954:15;4971:8;4981:15;4998:12;;5012:3;5017:7;4918:107;;;;-1:-1:-1;;;;;4918:107:6;-1:-1:-1;;;;;4918:107:6;;;;;;-1:-1:-1;;;;;4918:107:6;-1:-1:-1;;;;;4918:107:6;;;;;;-1:-1:-1;;;;;4918:107:6;-1:-1:-1;;;;;4918:107:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;4918:107:6;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;4918:107:6;;;;-1:-1:-1;4918:107:6;;-1:-1:-1;;;;;;;;;4918:107:6;4229:803;;;;;;;;;:::o;3459:764::-;3575:19;3572:147;;3651:15;;3610:11;;3627:60;;-1:-1:-1;;;;;3651:15:6;3668:18;3627:23;:60::i;:::-;27:10:-1;;39:1;23:18;;45:23;;-1:-1;3610:78:6;;;;;;;;;;;3702:7;;3572:147;3729:16;;;;;;;;3756:21;3780:17;3798:14;3780:33;;;;;;;;;;;;;;;;3756:57;;3824:13;3838:14;3824:29;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;3824:54:6;;;;;;;;;;3888:329;3908:16;3904:1;:20;3888:329;;;3945:261;3999:14;4031:161;4078:18;4118:12;4131:14;4118:28;;;;;;;;;;;;;;;;4173:1;4168;:6;;4031:25;:161::i;:::-;3945:36;:261::i;:::-;3926:3;;3888:329;;;;3459:764;;;;:::o;199:1166:16:-;277:14;303:24;381:8;330:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;330:60:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;330:60:16;;;-1:-1:-1;;26:21;;;22:32;;6:49;;330:60:16;;;49:4:-1;25:18;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;431:18:16;;421:34;;452:2;431:23;;421:34;;;;;;;;;;;;;;;;;;330:60;-1:-1:-1;400:18:16;;-1:-1:-1;421:34:16;;-1:-1:-1;431:23:16;-1:-1:-1;421:34:16;;;;;;;21:6:-1;;104:10;421:34:16;87::-1;135:17;;-1:-1;421:34:16;-1:-1:-1;538:66:16;515:4;504:16;;497:108;-1:-1:-1;;;663:7:16;659:42;;636:4;625:16;;618:84;756:66;733:4;722:16;;715:108;877:41;;854:4;843:16;;836:83;-1:-1:-1;;;950:3:16;939:15;;932:107;504:16;-1:-1:-1;;1067:100:16;1087:11;:18;1083:1;:22;1067:100;;;1142:11;1154:1;1142:14;;;;;;;;;;;;;;;;1126:5;1137:1;1132:2;:6;1126:13;;;;;;;;;;;:30;-1:-1:-1;;;;;1126:30:16;;;;;;;;-1:-1:-1;1107:3:16;;1067:100;;;;1215:5;1209:12;1255:4;1248:5;1244:16;1297:3;1291:4;1288:1;1281:20;1271:30;-1:-1:-1;;;;;;;;1337:20:16;;1329:29;;;;;;199:1166;;;;;;:::o;18232:186:10:-;18362:47;;;;;;;;-1:-1:-1;;18362:47:10;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18362:47:10;;;;;;18352:58;;;;;;18232:186::o;16697:1221::-;16853:39;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;16853:39:10;;;;;;;16843:50;;;;;16809:7;;16921:3;16915:9;;;:14;;16809:7;;16973:173;-1:-1:-1;;;;;;;;;;;17006:1:10;17002:2;16995:16;16990:21;-1:-1:-1;;;;;;;;;;;;876:1:10;-1:-1:-1;;;;;;;;;;;775:77:10;17059:2;17055;17048:17;17044:2;17037:32;17030:46;17025:51;;17095:8;17100:2;17095:4;:8::i;:::-;17090:13;-1:-1:-1;17142:2:10;-1:-1:-1;;;;;;;;;;;17132:2:10;17128;17121:17;:23;;16973:173;;17158:3;:18;;;;-1:-1:-1;17170:1:10;17165:2;:6;:11;17158:18;:41;;;;17181:3;17180:4;:19;;;;-1:-1:-1;17193:1:10;17188:2;:6;17198:1;17188:11;17180:19;17155:69;;;17222:2;-1:-1:-1;;;;;;;;;;;17218:6:10;17213:11;;17155:69;17250:18;17282:7;;17279:551;;17317:3;17311:9;;;:14;;;-1:-1:-1;;;;;;17344:14:10;-1:-1:-1;;;;;;;;;;;876:1:10;-1:-1:-1;;;;;;;;;;;775:77:10;17406:2;17402;17395:17;17391:2;17384:32;17377:46;17372:51;;17437:7;17447:8;17452:2;17447:4;:8::i;:::-;17437:18;;17472:3;:18;;;;-1:-1:-1;17484:1:10;17479:2;:6;:11;17472:18;:41;;;;17495:3;17494:4;:19;;;;-1:-1:-1;17507:1:10;17502:2;:6;17512:1;17502:11;17494:19;17469:73;;;-1:-1:-1;;;;;;;;;;;17536:6:10;17469:73;17585:2;-1:-1:-1;;;;;;;;;;;17575:2:10;17571;17564:17;:23;17556:64;;;;;-1:-1:-1;;;17556:64:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17636:12;17650:16;17678:1;-1:-1:-1;;;;;17670:21:10;17703:2;17707;17711;17715;17692:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17692:26:10;;;17670:49;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;17670:49:10;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;17635:84:10;;;;17741:7;17733:32;;;;;-1:-1:-1;;;17733:32:10;;;;;;;;;;;;-1:-1:-1;;;17733:32:10;;;;;;;;;;;;;;;17801:3;17790:29;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17790:29:10;;;;;;;;;-1:-1:-1;17790:29:10;-1:-1:-1;;;;17279:551:10;17848:1;17843:2;:6;17853:1;17843:11;17840:42;;;-1:-1:-1;;;17868:14:10;;;;17840:42;-1:-1:-1;17908:2:10;;16697:1221;-1:-1:-1;;;;;;;16697:1221:10:o;884:15368::-;928:6;-1:-1:-1;;;;;;;;;;;775:77:10;3965:1;;3955:15;3950:20;;4023:1;4020;4017;4010:15;4060:1;4057;4054;4047:15;4042:20;;4097:1;4094;4091;4084:15;4079:20;;4134:1;4131;4128;4121:15;4116:20;;4171:1;4168;4165;4158:15;4153:20;;4208:1;4205;4202;4195:15;4190:20;;4271:1;4268;4265;4258:15;4312:1;4309;4306;4299:15;4294:20;;4353:1;4350;4347;4340:15;4335:20;;4394:1;4391;4388;4381:15;4376:20;;4435:1;4432;4429;4422:15;4417:20;;4476:1;4473;4470;4463:15;4458:20;;4517:1;4514;4511;4504:15;4499:20;;4558:1;4555;4552;4545:15;4540:20;;4599:1;4596;4593;4586:15;4581:20;;4640:1;4637;4634;4627:15;4622:20;;4681:1;4678;4675;4668:15;4663:20;;4722:1;4719;4716;4709:15;4704:20;;4763:1;4760;4757;4750:15;4745:20;;4804:1;4801;4798;4791:15;4786:20;;4845:1;4842;4839;4832:15;4827:20;;4886:1;4883;4880;4873:15;4868:20;;4927:1;4924;4921;4914:15;4909:20;;4968:1;4965;4962;4955:15;4950:20;;5009:1;5006;5003;4996:15;4991:20;;5050:1;5047;5044;5037:15;5032:20;;5091:1;5088;5085;5078:15;5073:20;;5132:1;5129;5126;5119:15;5114:20;;5173:1;5170;5167;5160:15;5155:20;;5214:1;5211;5208;5201:15;5196:20;;5255:1;5252;5249;5242:15;5237:20;;5296:1;5293;5290;5283:15;5278:20;;5337:1;5334;5331;5324:15;5319:20;;5378:1;5375;5372;5365:15;5360:20;;5419:1;5416;5413;5406:15;5401:20;;5460:1;5457;5454;5447:15;5442:20;;5501:1;5498;5495;5488:15;5483:20;;5542:1;5539;5536;5529:15;5524:20;;5583:1;5580;5577;5570:15;5565:20;;5624:1;5621;5618;5611:15;5606:20;;5665:1;5662;5659;5652:15;5647:20;;5706:1;5703;5700;5693:15;5688:20;;5747:1;5744;5741;5734:15;5729:20;;5788:1;5785;5782;5775:15;5770:20;;5829:1;5826;5823;5816:15;5811:20;;5870:1;5867;5864;5857:15;5852:20;;5911:1;5908;5905;5898:15;5893:20;;5952:1;5949;5946;5939:15;5934:20;;5993:1;5990;5987;5980:15;5975:20;;6034:1;6031;6028;6021:15;6016:20;;6075:1;6072;6069;6062:15;6057:20;;6116:1;6113;6110;6103:15;6098:20;;6157:1;6154;6151;6144:15;6139:20;;6198:1;6195;6192;6185:15;6180:20;;6239:1;6236;6233;6226:15;6221:20;;6280:1;6277;6274;6267:15;6262:20;;6321:1;6318;6315;6308:15;6303:20;;6362:1;6359;6356;6349:15;6344:20;;6403:1;6400;6397;6390:15;6385:20;;6444:1;6441;6438;6431:15;6426:20;;6485:1;6482;6479;6472:15;6467:20;;6526:1;6523;6520;6513:15;6508:20;;6567:1;6564;6561;6554:15;6549:20;;6608:1;6605;6602;6595:15;6590:20;;6649:1;6646;6643;6636:15;6631:20;;6690:1;6687;6684;6677:15;6672:20;;6761:1;6758;6755;6748:15;6806:1;6803;6800;6793:15;6788:20;;6851:1;6848;6845;6838:15;6833:20;;6896:1;6893;6890;6883:15;6878:20;;6941:1;6938;6935;6928:15;6923:20;;6986:1;6983;6980;6973:15;6968:20;;6713:297;7049:1;7046;7043;7036:15;7031:20;;7090:1;7087;7084;7077:15;7072:20;;7131:1;7128;7125;7118:15;7113:20;;7172:1;7169;7166;7159:15;7154:20;;7213:1;7210;7207;7200:15;7195:20;;7254:1;7251;7248;7241:15;7236:20;;7295:1;7292;7289;7282:15;7277:20;;7336:1;7333;7330;7323:15;7318:20;;7377:1;7374;7371;7364:15;7359:20;;7418:1;7415;7412;7405:15;7400:20;;7459:1;7456;7453;7446:15;7441:20;;7500:1;7497;7494;7487:15;7482:20;;7541:1;7538;7535;7528:15;7523:20;;7582:1;7579;7576;7569:15;7564:20;;7623:1;7620;7617;7610:15;7605:20;;7664:1;7661;7658;7651:15;7646:20;;7705:1;7702;7699;7692:15;7687:20;;7746:1;7743;7740;7733:15;7728:20;;7787:1;7784;7781;7774:15;7769:20;;7828:1;7825;7822;7815:15;7810:20;;7869:1;7866;7863;7856:15;7851:20;;7910:1;7907;7904;7897:15;7892:20;;7951:1;7948;7945;7938:15;7933:20;;7992:1;7989;7986;7979:15;7974:20;;8033:1;8030;8027;8020:15;8015:20;;8074:1;8071;8068;8061:15;8056:20;;8115:1;8112;8109;8102:15;8097:20;;8156:1;8153;8150;8143:15;8138:20;;8197:1;8194;8191;8184:15;8179:20;;8238:1;8235;8232;8225:15;8220:20;;8279:1;8276;8273;8266:15;8261:20;;8320:1;8317;8314;8307:15;8302:20;;8361:1;8358;8355;8348:15;8343:20;;8402:1;8399;8396;8389:15;8384:20;;8443:1;8440;8437;8430:15;8425:20;;8484:1;8481;8478;8471:15;8466:20;;8525:1;8522;8519;8512:15;8507:20;;8566:1;8563;8560;8553:15;8548:20;;8607:1;8604;8601;8594:15;8589:20;;8648:1;8645;8642;8635:15;8630:20;;8689:1;8686;8683;8676:15;8671:20;;8730:1;8727;8724;8717:15;8712:20;;8771:1;8768;8765;8758:15;8753:20;;8812:1;8809;8806;8799:15;8794:20;;8853:1;8850;8847;8840:15;8835:20;;8894:1;8891;8888;8881:15;8876:20;;8935:1;8932;8929;8922:15;8917:20;;8976:1;8973;8970;8963:15;8958:20;;9017:1;9014;9011;9004:15;8999:20;;9058:1;9055;9052;9045:15;9040:20;;9099:1;9096;9093;9086:15;9081:20;;9140:1;9137;9134;9127:15;9122:20;;9181:1;9178;9175;9168:15;9163:20;;9222:1;9219;9216;9209:15;9204:20;;9263:1;9260;9257;9250:15;9245:20;;9304:1;9301;9298;9291:15;9286:20;;9345:1;9342;9339;9332:15;9327:20;;9386:1;9383;9380;9373:15;9368:20;;9427:1;9424;9421;9414:15;9409:20;;9468:1;9465;9462;9455:15;9450:20;;9509:1;9506;9503;9496:15;9491:20;;9550:1;9547;9544;9537:15;9532:20;;9591:1;9588;9585;9578:15;9573:20;;9632:1;9629;9626;9619:15;9614:20;;9673:1;9670;9667;9660:15;9655:20;;9714:1;9711;9708;9701:15;9696:20;;9755:1;9752;9749;9742:15;9737:20;;9796:1;9793;9790;9783:15;9778:20;;9837:1;9834;9831;9824:15;9819:20;;9878:1;9875;9872;9865:15;9860:20;;9919:1;9916;9913;9906:15;9901:20;;9960:1;9957;9954;9947:15;9942:20;;10001:1;9998;9995;9988:15;9983:20;;10042:1;10039;10036;10029:15;10024:20;;10083:1;10080;10077;10070:15;10065:20;;10124:1;10121;10118;10111:15;10106:20;;10165:1;10162;10159;10152:15;10147:20;;10206:1;10203;10200;10193:15;10188:20;;10247:1;10244;10241;10234:15;10229:20;;10288:1;10285;10282;10275:15;10270:20;;10329:1;10326;10323;10316:15;10311:20;;10370:1;10367;10364;10357:15;10352:20;;10411:1;10408;10405;10398:15;10393:20;;10452:1;10449;10446;10439:15;10434:20;;10493:1;10490;10487;10480:15;10475:20;;10534:1;10531;10528;10521:15;10516:20;;10575:1;10572;10569;10562:15;10557:20;;10616:1;10613;10610;10603:15;10598:20;;10657:1;10654;10651;10644:15;10639:20;;10698:1;10695;10692;10685:15;10680:20;;10739:1;10736;10733;10726:15;10721:20;;10780:1;10777;10774;10767:15;10762:20;;10821:1;10818;10815;10808:15;10803:20;;10862:1;10859;10856;10849:15;10844:20;;10903:1;10900;10897;10890:15;10885:20;;10944:1;10941;10938;10931:15;10926:20;;10985:1;10982;10979;10972:15;10967:20;;11026:1;11023;11020;11013:15;11008:20;;11067:1;11064;11061;11054:15;11049:20;;11108:1;11105;11102;11095:15;11090:20;;11149:1;11146;11143;11136:15;11131:20;;11190:1;11187;11184;11177:15;11172:20;;11231:1;11228;11225;11218:15;11213:20;;11272:1;11269;11266;11259:15;11254:20;;11313:1;11310;11307;11300:15;11295:20;;11354:1;11351;11348;11341:15;11336:20;;11395:1;11392;11389;11382:15;11377:20;;11436:1;11433;11430;11423:15;11418:20;;11477:1;11474;11471;11464:15;11459:20;;11518:1;11515;11512;11505:15;11500:20;;11559:1;11556;11553;11546:15;11541:20;;11600:1;11597;11594;11587:15;11582:20;;11641:1;11638;11635;11628:15;11623:20;;11682:1;11679;11676;11669:15;11664:20;;4227:7475;11737:1;11734;11731;11724:15;11719:20;;11774:1;11771;11768;11761:15;11756:20;;11811:1;11808;11805;11798:15;11793:20;;11848:1;11845;11842;11835:15;11830:20;;11885:1;11882;11879;11872:15;11867:20;;11922:1;11919;11916;11909:15;11904:20;;11959:1;11956;11953;11946:15;11941:20;;11996:1;11993;11990;11983:15;11978:20;;3983:8029;12043:1;12040;12037;12030:15;12025:20;;12076:1;12073;12070;12063:15;12058:20;;12109:1;12106;12103;12096:15;12091:20;;12142:1;12139;12136;12129:15;12124:20;;12175:1;12172;12169;12162:15;12157:20;;12208:1;12205;12202;12195:15;12190:20;;12241:1;12238;12235;12228:15;12223:20;;12274:1;12271;12268;12261:15;12256:20;;12307:1;12304;12301;12294:15;12289:20;;12340:1;12337;12334;12327:15;12322:20;;12373:1;12370;12367;12360:15;12355:20;;12406:1;12403;12400;12393:15;12388:20;;12439:1;12436;12433;12426:15;12421:20;;12472:1;12469;12466;12459:15;12454:20;;12505:1;12502;12499;12492:15;12487:20;;12538:1;12535;12532;12525:15;12520:20;;12571:1;12568;12565;12558:15;12553:20;;12604:1;12601;12598;12591:15;12586:20;;12637:1;12634;12631;12624:15;12619:20;;12670:1;12667;12664;12657:15;12652:20;;12703:1;12700;12697;12690:15;12685:20;;12736:1;12733;12730;12723:15;12718:20;;12769:1;12766;12763;12756:15;12751:20;;12802:1;12799;12796;12789:15;12784:20;;12835:1;12832;12829;12822:15;12817:20;;12868:1;12865;12862;12855:15;12850:20;;12901:1;12898;12895;12888:15;12883:20;;12934:1;12931;12928;12921:15;12916:20;;12967:1;12964;12961;12954:15;12949:20;;13000:1;12997;12994;12987:15;12982:20;;13033:1;13030;13027;13020:15;13015:20;;13066:1;13063;13060;13053:15;13048:20;;13099:1;13096;13093;13086:15;13081:20;;13132:1;13129;13126;13119:15;13114:20;;13165:1;13162;13159;13152:15;13147:20;;13198:1;13195;13192;13185:15;13180:20;;13231:1;13228;13225;13218:15;13213:20;;13264:1;13261;13258;13251:15;13246:20;;13297:1;13294;13291;13284:15;13279:20;;13330:1;13327;13324;13317:15;13312:20;;13363:1;13360;13357;13350:15;13345:20;;13396:1;13393;13390;13383:15;13378:20;;13429:1;13426;13423;13416:15;13411:20;;13462:1;13459;13456;13449:15;13444:20;;13495:1;13492;13489;13482:15;13477:20;;13528:1;13525;13522;13515:15;13510:20;;13561:1;13558;13555;13548:15;13543:20;;13594:1;13591;13588;13581:15;13576:20;;13627:1;13624;13621;13614:15;13609:20;;13660:1;13657;13654;13647:15;13642:20;;13693:1;13690;13687;13680:15;13675:20;;13726:1;13723;13720;13713:15;13708:20;;13759:1;13756;13753;13746:15;13741:20;;13792:1;13789;13786;13779:15;13774:20;;13825:1;13822;13819;13812:15;13807:20;;13858:1;13855;13852;13845:15;13840:20;;13891:1;13888;13885;13878:15;13873:20;;13924:1;13921;13918;13911:15;13906:20;;13957:1;13954;13951;13944:15;13939:20;;13990:1;13987;13984;13977:15;13972:20;;14023:1;14020;14017;14010:15;14005:20;;14056:1;14053;14050;14043:15;14038:20;;14089:1;14086;14083;14076:15;14071:20;;14122:1;14119;14116;14109:15;14104:20;;14155:1;14152;14149;14142:15;14137:20;;14188:1;14185;14182;14175:15;14170:20;;14221:1;14218;14215;14208:15;14203:20;;14254:1;14251;14248;14241:15;14236:20;;14287:1;14284;14281;14274:15;14269:20;;14320:1;14317;14314;14307:15;14302:20;;14353:1;14350;14347;14340:15;14335:20;;14386:1;14383;14380;14373:15;14368:20;;14419:1;14416;14413;14406:15;14401:20;;14452:1;14449;14446;14439:15;14434:20;;14485:1;14482;14479;14472:15;14467:20;;14518:1;14515;14512;14505:15;14500:20;;14551:1;14548;14545;14538:15;14533:20;;14584:1;14581;14578;14571:15;14566:20;;14617:1;14614;14611;14604:15;14599:20;;14650:1;14647;14644;14637:15;14632:20;;14683:1;14680;14677;14670:15;14665:20;;14716:1;14713;14710;14703:15;14698:20;;14749:1;14746;14743;14736:15;14731:20;;14782:1;14779;14776;14769:15;14764:20;;14815:1;14812;14809;14802:15;14797:20;;14848:1;14845;14842;14835:15;14830:20;;14881:1;14878;14875;14868:15;14863:20;;14914:1;14911;14908;14901:15;14896:20;;14947:1;14944;14941;14934:15;14929:20;;14980:1;14977;14974;14967:15;14962:20;;15013:1;15010;15007;15000:15;14995:20;;15046:1;15043;15040;15033:15;15028:20;;15079:1;15076;15073;15066:15;15061:20;;15112:1;15109;15106;15099:15;15094:20;;15145:1;15142;15139;15132:15;15127:20;;15178:1;15175;15172;15165:15;15160:20;;15211:1;15208;15205;15198:15;15193:20;;15244:1;15241;15238;15231:15;15226:20;;15277:1;15274;15271;15264:15;15259:20;;15310:1;15307;15304;15297:15;15292:20;;15343:1;15340;15337;15330:15;15325:20;;15376:1;15373;15370;15363:15;15358:20;;15409:1;15406;15403;15396:15;15391:20;;15442:1;15439;15436;15429:15;15424:20;;15475:1;15472;15469;15462:15;15457:20;;15508:1;15505;15502;15495:15;15490:20;;15541:1;15538;15535;15528:15;15523:20;;15574:1;15571;15568;15561:15;15556:20;;15607:1;15604;15601;15594:15;15589:20;;15640:1;15637;15634;15627:15;15622:20;;15673:1;15670;15667;15660:15;15655:20;;15706:1;15703;15700;15693:15;15688:20;;15739:1;15736;15733;15726:15;15721:20;;15772:1;15769;15766;15759:15;15754:20;;15805:1;15802;15799;15792:15;15787:20;;15838:1;15835;15832;15825:15;15820:20;;15871:1;15868;15865;15858:15;15853:20;;15904:1;15901;15898;15891:15;15886:20;;15937:1;15934;15931;15924:15;15919:20;;15970:1;15967;15964;15957:15;15952:20;;16003:1;16000;15997;15990:15;15985:20;;16036:1;16033;16030;16023:15;16018:20;;16069:1;16066;16063;16056:15;16051:20;;16102:1;16099;16096;16089:15;16084:20;;16135:1;16132;16129;16122:15;16117:20;;16168:1;16165;16162;16155:15;16150:20;;16201:1;16198;16195;16188:15;16183:20;;16234:1;16231;16228;16221:15;16216:20;1039:15207;-1:-1:-1;;;1039:15207:10:o;1457:3577:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1457:3577:6;;;-1:-1:-1;1457:3577:6;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1457:3577:6;;;-1:-1:-1;1457:3577:6;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o","source":"pragma solidity ^0.5.1;\n\nimport { IERC20 } from \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport { ConditionalTokens } from \"@gnosis.pm/conditional-tokens-contracts/contracts/ConditionalTokens.sol\";\nimport { CTHelpers } from \"@gnosis.pm/conditional-tokens-contracts/contracts/CTHelpers.sol\";\nimport { ConstructedCloneFactory } from \"@gnosis.pm/util-contracts/contracts/ConstructedCloneFactory.sol\";\nimport { LMSRMarketMaker } from \"./LMSRMarketMaker.sol\";\nimport { Whitelist } from \"./Whitelist.sol\";\nimport { ERC1155TokenReceiver } from \"@gnosis.pm/conditional-tokens-contracts/contracts/ERC1155/ERC1155TokenReceiver.sol\";\n\ncontract LMSRMarketMakerData {\n    address internal _owner;\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n\n    bytes4 internal constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;\n    mapping(bytes4 => bool) internal _supportedInterfaces;\n\n\n    uint64 constant FEE_RANGE = 10**18;\n    event AMMCreated(uint initialFunding);\n    ConditionalTokens internal pmSystem;\n    IERC20 internal collateralToken;\n    bytes32[] internal conditionIds;\n    uint internal atomicOutcomeSlotCount;\n    uint64 internal fee;\n    uint internal funding;\n    Stage internal stage;\n    Whitelist internal whitelist;\n\n    uint[] internal outcomeSlotCounts;\n    bytes32[][] internal collectionIds;\n    uint[] internal positionIds;\n\n    enum Stage {\n        Running,\n        Paused,\n        Closed\n    }\n}\n\ncontract LMSRMarketMakerFactory is ConstructedCloneFactory, LMSRMarketMakerData {\n    event LMSRMarketMakerCreation(address indexed creator, LMSRMarketMaker lmsrMarketMaker, ConditionalTokens pmSystem, IERC20 collateralToken, bytes32[] conditionIds, uint64 fee, uint funding);\n\n    LMSRMarketMaker public implementationMaster;\n\n    constructor() public {\n        implementationMaster = new LMSRMarketMaker();\n    }\n\n    function cloneConstructor(bytes calldata consData) external {\n        (\n            ConditionalTokens _pmSystem,\n            IERC20 _collateralToken,\n            bytes32[] memory _conditionIds,\n            uint64 _fee,\n            Whitelist _whitelist\n        ) = abi.decode(consData, (ConditionalTokens, IERC20, bytes32[], uint64, Whitelist));\n\n        _owner = msg.sender;\n        emit OwnershipTransferred(address(0), _owner);\n\n        _supportedInterfaces[_INTERFACE_ID_ERC165] = true;\n        _supportedInterfaces[\n            ERC1155TokenReceiver(0).onERC1155Received.selector ^\n            ERC1155TokenReceiver(0).onERC1155BatchReceived.selector\n        ] = true;\n\n        // Validate inputs\n        require(address(_pmSystem) != address(0) && _fee < FEE_RANGE);\n        pmSystem = _pmSystem;\n        collateralToken = _collateralToken;\n        conditionIds = _conditionIds;\n        fee = _fee;\n        whitelist = _whitelist;\n\n        atomicOutcomeSlotCount = 1;\n        outcomeSlotCounts = new uint[](conditionIds.length);\n        for (uint i = 0; i < conditionIds.length; i++) {\n            uint outcomeSlotCount = pmSystem.getOutcomeSlotCount(conditionIds[i]);\n            atomicOutcomeSlotCount *= outcomeSlotCount;\n            outcomeSlotCounts[i] = outcomeSlotCount;\n        }\n        require(atomicOutcomeSlotCount > 1, \"conditions must be valid\");\n\n        collectionIds = new bytes32[][](conditionIds.length);\n        _recordCollectionIDsForAllConditions(conditionIds.length, bytes32(0));\n\n        stage = Stage.Paused;\n        emit AMMCreated(funding);\n    }\n\n    function _recordCollectionIDsForAllConditions(uint conditionsLeft, bytes32 parentCollectionId) private {\n        if(conditionsLeft == 0) {\n            positionIds.push(CTHelpers.getPositionId(collateralToken, parentCollectionId));\n            return;\n        }\n\n        conditionsLeft--;\n\n        uint outcomeSlotCount = outcomeSlotCounts[conditionsLeft];\n\n        collectionIds[conditionsLeft].push(parentCollectionId);\n        for(uint i = 0; i < outcomeSlotCount; i++) {\n            _recordCollectionIDsForAllConditions(\n                conditionsLeft,\n                CTHelpers.getCollectionId(\n                    parentCollectionId,\n                    conditionIds[conditionsLeft],\n                    1 << i\n                )\n            );\n        }\n    }\n\n    function createLMSRMarketMaker(ConditionalTokens pmSystem, IERC20 collateralToken, bytes32[] calldata conditionIds, uint64 fee, Whitelist whitelist, uint funding)\n        external\n        returns (LMSRMarketMaker lmsrMarketMaker)\n    {\n        lmsrMarketMaker = LMSRMarketMaker(createClone(address(implementationMaster), abi.encode(pmSystem, collateralToken, conditionIds, fee, whitelist)));\n        collateralToken.transferFrom(msg.sender, address(this), funding);\n        collateralToken.approve(address(lmsrMarketMaker), funding);\n        lmsrMarketMaker.changeFunding(int(funding));\n        lmsrMarketMaker.resume();\n        lmsrMarketMaker.transferOwnership(msg.sender);\n        emit LMSRMarketMakerCreation(msg.sender, lmsrMarketMaker, pmSystem, collateralToken, conditionIds, fee, funding);\n    }\n}\n","compiler":{"name":"solc","version":"0.5.10+commit.5a6ea5b1.Emscripten.clang"},"networks":{"1":{"events":{"0x6867cd3ddf1a2f1ce80923be4ebe91b6cdab90ef2266e1b5c38c3e509ad0d8f8":{"anonymous":false,"inputs":[{"indexed":true,"name":"creator","type":"address"},{"indexed":false,"name":"lmsrMarketMaker","type":"address"},{"indexed":false,"name":"pmSystem","type":"address"},{"indexed":false,"name":"collateralToken","type":"address"},{"indexed":false,"name":"conditionIds","type":"bytes32[]"},{"indexed":false,"name":"fee","type":"uint64"},{"indexed":false,"name":"funding","type":"uint256"}],"name":"LMSRMarketMakerCreation","type":"event","signature":"0x6867cd3ddf1a2f1ce80923be4ebe91b6cdab90ef2266e1b5c38c3e509ad0d8f8"},"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0":{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event","signature":"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"},"0x631ac92e0a879a687b1bd27a7dcbf3ec0be307aa0a1046c0df4109be02c49307":{"anonymous":false,"inputs":[{"indexed":false,"name":"initialFunding","type":"uint256"}],"name":"AMMCreated","type":"event","signature":"0x631ac92e0a879a687b1bd27a7dcbf3ec0be307aa0a1046c0df4109be02c49307"},"0x3d2b821286d97aa9d35330d87a82f7b548b9737b10e2d1ba59994edfd50e9d2b":{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"clone","type":"address"}],"name":"CloneCreated","type":"event","signature":"0x3d2b821286d97aa9d35330d87a82f7b548b9737b10e2d1ba59994edfd50e9d2b"}},"links":{"Fixed192x64Math":"0x75a6D6251511AF081f77F2B531C14808fB3805f3"},"address":"0x578138C6211913c3fb23BfB8a7C9D220882d1a50","transactionHash":"0xc3d891e187572c6d9637ffa402b003717189c1e42ad9f43ae2e6e5144fc4c1a2"},"4":{"events":{"0x6867cd3ddf1a2f1ce80923be4ebe91b6cdab90ef2266e1b5c38c3e509ad0d8f8":{"anonymous":false,"inputs":[{"indexed":true,"name":"creator","type":"address"},{"indexed":false,"name":"lmsrMarketMaker","type":"address"},{"indexed":false,"name":"pmSystem","type":"address"},{"indexed":false,"name":"collateralToken","type":"address"},{"indexed":false,"name":"conditionIds","type":"bytes32[]"},{"indexed":false,"name":"fee","type":"uint64"},{"indexed":false,"name":"funding","type":"uint256"}],"name":"LMSRMarketMakerCreation","type":"event","signature":"0x6867cd3ddf1a2f1ce80923be4ebe91b6cdab90ef2266e1b5c38c3e509ad0d8f8"},"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0":{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event","signature":"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"},"0x631ac92e0a879a687b1bd27a7dcbf3ec0be307aa0a1046c0df4109be02c49307":{"anonymous":false,"inputs":[{"indexed":false,"name":"initialFunding","type":"uint256"}],"name":"AMMCreated","type":"event","signature":"0x631ac92e0a879a687b1bd27a7dcbf3ec0be307aa0a1046c0df4109be02c49307"},"0x3d2b821286d97aa9d35330d87a82f7b548b9737b10e2d1ba59994edfd50e9d2b":{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"clone","type":"address"}],"name":"CloneCreated","type":"event","signature":"0x3d2b821286d97aa9d35330d87a82f7b548b9737b10e2d1ba59994edfd50e9d2b"}},"links":{"Fixed192x64Math":"0x81B086d91538fb1826F9D4e91662d4Fdd65Df413"},"address":"0x03Ce050DAEB28021086Bf8e9B7843d6212c05F7B","transactionHash":"0xb0f81591c6fc48e078f485965dd6453f6039abef27b82fb450c46ee1a3f2657e"}},"schemaVersion":"3.0.16","updatedAt":"2020-03-16T19:03:53.106Z","devdoc":{"methods":{}},"userdoc":{"methods":{}}}