{"contractName":"FPMMDeterministicFactory","abi":[{"constant":true,"inputs":[{"name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"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":"fixedProductMarketMaker","type":"address"},{"indexed":false,"name":"conditionalTokens","type":"address"},{"indexed":false,"name":"collateralToken","type":"address"},{"indexed":false,"name":"conditionIds","type":"bytes32[]"},{"indexed":false,"name":"fee","type":"uint256"}],"name":"FixedProductMarketMakerCreation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"funder","type":"address"},{"indexed":false,"name":"amountsAdded","type":"uint256[]"},{"indexed":false,"name":"sharesMinted","type":"uint256"}],"name":"FPMMFundingAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"funder","type":"address"},{"indexed":false,"name":"amountsRemoved","type":"uint256[]"},{"indexed":false,"name":"collateralRemovedFromFeePool","type":"uint256"},{"indexed":false,"name":"sharesBurnt","type":"uint256"}],"name":"FPMMFundingRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"investmentAmount","type":"uint256"},{"indexed":false,"name":"feeAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensBought","type":"uint256"}],"name":"FPMMBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"returnAmount","type":"uint256"},{"indexed":false,"name":"feeAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensSold","type":"uint256"}],"name":"FPMMSell","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":"operator","type":"address"},{"name":"from","type":"address"},{"name":"id","type":"uint256"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"},{"name":"from","type":"address"},{"name":"ids","type":"uint256[]"},{"name":"values","type":"uint256[]"},{"name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"saltNonce","type":"uint256"},{"name":"conditionalTokens","type":"address"},{"name":"collateralToken","type":"address"},{"name":"conditionIds","type":"bytes32[]"},{"name":"fee","type":"uint256"},{"name":"initialFunds","type":"uint256"},{"name":"distributionHint","type":"uint256[]"}],"name":"create2FixedProductMarketMaker","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.5.10+commit.5a6ea5b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"saltNonce\",\"type\":\"uint256\"},{\"name\":\"conditionalTokens\",\"type\":\"address\"},{\"name\":\"collateralToken\",\"type\":\"address\"},{\"name\":\"conditionIds\",\"type\":\"bytes32[]\"},{\"name\":\"fee\",\"type\":\"uint256\"},{\"name\":\"initialFunds\",\"type\":\"uint256\"},{\"name\":\"distributionHint\",\"type\":\"uint256[]\"}],\"name\":\"create2FixedProductMarketMaker\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"ids\",\"type\":\"uint256[]\"},{\"name\":\"values\",\"type\":\"uint256[]\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"id\",\"type\":\"uint256\"},{\"name\":\"value\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\"}],\"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\":\"fixedProductMarketMaker\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"conditionalTokens\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"collateralToken\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"conditionIds\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"FixedProductMarketMakerCreation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"funder\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amountsAdded\",\"type\":\"uint256[]\"},{\"indexed\":false,\"name\":\"sharesMinted\",\"type\":\"uint256\"}],\"name\":\"FPMMFundingAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"funder\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amountsRemoved\",\"type\":\"uint256[]\"},{\"indexed\":false,\"name\":\"collateralRemovedFromFeePool\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"sharesBurnt\",\"type\":\"uint256\"}],\"name\":\"FPMMFundingRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"investmentAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"name\":\"outcomeIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"outcomeTokensBought\",\"type\":\"uint256\"}],\"name\":\"FPMMBuy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"returnAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"name\":\"outcomeIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"outcomeTokensSold\",\"type\":\"uint256\"}],\"name\":\"FPMMSell\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"clone\",\"type\":\"address\"}],\"name\":\"CloneCreated\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See `IERC165.supportsInterface`.     * Time complexity O(1), guaranteed to always use less than 30 000 gas.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/FPMMDeterministicFactory.sol\":\"FPMMDeterministicFactory\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/Create2CloneFactory.sol\":{\"keccak256\":\"0x7fc87f62575ade148e41001fd3029f2fb85b9928a3941eb06a9e3bcb6ccfe43f\",\"urls\":[\"bzzr://01815e1a0e940e9a18b998e304fc29edd20292d7a8a1c96c711f3761d9d4a0ad\",\"dweb:/ipfs/QmeLjvm5GuuZFoYsuGaHX7vqNCZDQpqiDDTrWBzBDoV6dB\"]},\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/ERC20.sol\":{\"keccak256\":\"0x40a58d43f7c61c93c3e31fa2e398cbbd2768635703066fc37fc98ec19c1da70f\",\"urls\":[\"bzzr://535a311aa4c5d1d4c082822608b7d41eecdc45e4be9df6dc190f158546c809d9\",\"dweb:/ipfs/QmUacDZ7YZ7spzy2XsQuaZeMnKNTQuJUs7cXgQAjbGNScW\"]},\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/FPMMDeterministicFactory.sol\":{\"keccak256\":\"0xb967aaa5b5fb52dfa69dce6426398e8b6b6c6290a53f7995dd9a5ccfae66d6a0\",\"urls\":[\"bzzr://7e058405ba90b45af7785ad9cff48fdd73cf33d8ca50b92b1639e0bb9ee21ca4\",\"dweb:/ipfs/Qmcsw1XfFKeVTJg8bG6oEh4v9adgMSjYsbcvAm6WXQpttr\"]},\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/FixedProductMarketMaker.sol\":{\"keccak256\":\"0x68003703f48a2b244f5f0fe19473bb1602791d1277882ab3a159af3b1a31daec\",\"urls\":[\"bzzr://4d0cb66cc5c935d8631414bd811452c0eb2901bf6ef794350ebc393085b075fe\",\"dweb:/ipfs/QmdZskHkHDANmxM4XVcXLLeUjRJTuUKpWYYRFbR1FseVwv\"]},\"@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\"]},\"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/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":"0x60806040523480156200001157600080fd5b50620000467f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03620000cc16565b6200007a7f4e2312e0000000000000000000000000000000000000000000000000000000006001600160e01b03620000cc16565b60405162000088906200019b565b604051809103906000f080158015620000a5573d6000803e3d6000fd5b50600f80546001600160a01b0319166001600160a01b0392909216919091179055620001a9565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200015e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600e60205260409020805460ff19166001179055565b612c8d8062001f1783390190565b611d5e80620001b96000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a71461006757806312b4d20c146100a257806352e831dd146100c657806382e90fa014610136578063bc197c8114610220578063f23a6e6114610364575b600080fd5b61008e6004803603602081101561007d57600080fd5b50356001600160e01b0319166103f7565b604080519115158252519081900360200190f35b6100aa610416565b604080516001600160a01b039092168252519081900360200190f35b610134600480360360208110156100dc57600080fd5b810190602081018135600160201b8111156100f657600080fd5b82018360208201111561010857600080fd5b803590602001918460018302840111600160201b8311171561012957600080fd5b509092509050610425565b005b6100aa600480360360e081101561014c57600080fd5b8135916001600160a01b03602082013581169260408301359091169190810190608081016060820135600160201b81111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460208302840111600160201b831117156101b957600080fd5b919390928235926020810135929190606081019060400135600160201b8111156101e257600080fd5b8201836020820111156101f457600080fd5b803590602001918460208302840111600160201b8311171561021557600080fd5b50909250905061079e565b610347600480360360a081101561023657600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561026957600080fd5b82018360208201111561027b57600080fd5b803590602001918460208302840111600160201b8311171561029c57600080fd5b919390929091602081019035600160201b8111156102b957600080fd5b8201836020820111156102cb57600080fd5b803590602001918460208302840111600160201b831117156102ec57600080fd5b919390929091602081019035600160201b81111561030957600080fd5b82018360208201111561031b57600080fd5b803590602001918460018302840111600160201b8311171561033c57600080fd5b509092509050610bd8565b604080516001600160e01b03199092168252519081900360200190f35b610347600480360360a081101561037a57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156103b957600080fd5b8201836020820111156103cb57600080fd5b803590602001918460018302840111600160201b831117156103ec57600080fd5b509092509050610cf7565b6001600160e01b0319166000908152600e602052604090205460ff1690565b600f546001600160a01b031681565b600080606060008585608081101561043c57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561046f57600080fd5b82018360208201111561048157600080fd5b803590602001918460208302840111600160201b831117156104a257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250600360209081527f28b0ef64f7e82d3b26f3fd404bd0151552f792965f39c29ae82c0a78df67af9c805460ff199081166001908117909255630271189760e51b9093527f1b0a8c8743953bd832c9e1d6a5e52d4143b336fe3e4824afb8e5e7621b19f90b805490931617909155600480546001600160a01b03808d166001600160a01b03199283161790925560058054928c16929091169190911790558451999d50979b50929950509135965061059395600695890194509250611be2915050565b50600781905560065460408051828152602080840282010190915260019180156105c7578160200160208202803883390190505b5080516105dc91600991602090910190611be2565b5060005b6006548110156106a557600454600680546000926001600160a01b03169163d42dc0c2918590811061060e57fe5b90600052602060002001546040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561064d57600080fd5b505afa158015610661573d6000803e3d6000fd5b505050506040513d602081101561067757600080fd5b5051600980549482029491925082918490811061069057fe5b600091825260209091200155506001016105e0565b50600181116106fb576040805162461bcd60e51b815260206004820152601860248201527f636f6e646974696f6e73206d7573742062652076616c69640000000000000000604482015290519081900360640190fd5b60065460408051828152602080840282010190915290801561073157816020015b606081526020019060019003908161071c5790505b50805161074691600a91602090910190611c2d565b50600654610755906000610dc3565b600b5481146107955760405162461bcd60e51b8152600401808060200182810382526022815260200180611d086022913960400191505060405180910390fd5b50505050505050565b60008061084b600f60009054906101000a90046001600160a01b03168c8c8c8c8c8c60405160200180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052610e94565b9050336001600160a01b03167f92e0912d3d7f3192cad5c7ae3b47fb97f9c465c1dd12a5c24fd901ddb3905f43828c8c8c8c8c60405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003995090975050505050505050a28415610bca57601080546001600160a01b03191633908117909155604080516323b872dd60e01b8152600481019290925230602483015260448201879052516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b15801561098157600080fd5b505af1158015610995573d6000803e3d6000fd5b505050506040513d60208110156109ab57600080fd5b50506040805163095ea7b360e01b81526001600160a01b038381166004830152602482018890529151918b169163095ea7b3916044808201926020929091908290030181600087803b158015610a0057600080fd5b505af1158015610a14573d6000803e3d6000fd5b505050506040513d6020811015610a2a57600080fd5b505060408051636af8ad2360e11b81526004810187815260248201928352604482018690526001600160a01b0384169263d5f15a4692899289928992606401846020850280828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b158015610aa957600080fd5b505af1158015610abd573d6000803e3d6000fd5b5050604080516370a0823160e01b815230600482015290516001600160a01b038516935063a9059cbb9250339184916370a0823191602480820192602092909190829003018186803b158015610b1257600080fd5b505afa158015610b26573d6000803e3d6000fd5b505050506040513d6020811015610b3c57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b505050506040513d6020811015610bb757600080fd5b5050601080546001600160a01b03191690555b9a9950505050505050505050565b601054604051631759616b60e11b815230600482018181526001600160a01b039093166024830181905260a06044840190815260a484018a90526000943394632eb2c2d69493928d928d928d928d928d928d92906064810190608481019060c4018a60208b0280828437600083820152601f01601f19169091018581038452888152602090810191508990890280828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509b505050505050505050505050600060405180830381600087803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b5063bc197c8160e01b9c9b505050505050505050505050565b601054604051637921219560e11b815230600482018181526001600160a01b0390931660248301819052604483018890526064830187905260a06084840190815260a48401869052600094339463f242432a9493928b928b928b928b929160c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b5063f23a6e6160e01b9a9950505050505050505050565b81610dfc57600554600b90610de1906001600160a01b0316836110ca565b81546001810183556000928352602090922090910155610e90565b818060019003925050600060098381548110610e1457fe5b90600052602060002001549050600a8381548110610e2e57fe5b600091825260208083209091018054600181018255908352908220018390555b81811015610e8d57610e8584610e808560068881548110610e6b57fe5b9060005260206000200154856001901b61110e565b610dc3565b600101610e4e565b50505b5050565b60006060826040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610ed9578181015183820152602001610ec1565b50505050905090810190601f168015610f065780820380516001836020036101000a031916815260200191505b5060408051601f1981840381018252928252602080820180516001600160e01b03166352e831dd60e01b17905281518351606382018082526082909201909516850190910190925295506060945090925090508015610f6c576020820181803883390190505b507f3d3d606380380380913d393d73bebebebebebebebebebebebebebebebebebebe6020820152600160601b308102602d8301527f5af4602a57600080fd5b602d8060366000396000f3363d3d373d3d3d363d73be6041830152870260608201526e5af43d82803e903d91602b57fd5bf360881b6074820152905060005b825181101561103857828181518110610fff57fe5b602001015160f81c60f81b82826063018151811061101957fe5b60200101906001600160f81b031916908160001a905350600101610fea565b50604080513360208083019190915281830188905282518083038401815260609092019092528051908201208251909183018282826000f5955050506001600160a01b0384166110c0576040805162461bcd60e51b815260206004820152600e60248201526d18dc99585d194c8819985a5b195960921b604482015290519081900360640190fd5b5050509392505050565b6040805160609390931b6bffffffffffffffffffffffff19166020808501919091526034808501939093528151808503909301835260549093019052805191012090565b6040805160208082018590528183018490528251808303840181526060909201909252805191012060009060ff81901c151582805b600080516020611ce8833981519152600185089350600080516020611ce88339815191526003600080516020611ce883398151915280878809870908905061118a8161143d565b915080600080516020611ce88339815191528384091415611143578280156111b3575060028206155b806111ca5750821580156111ca5750600282066001145b156111e35781600080516020611ce88339815191520391505b87801561141a5760fe81901c151593506001600160fe1b0316600080516020611ce88339815191526003600080516020611ce883398151915280848509840908915060006112308361143d565b9050848015611240575060028106155b806112575750841580156112575750600281066001145b1561126d57600080516020611ce8833981519152035b82600080516020611ce8833981519152828309146112d2576040805162461bcd60e51b815260206004820152601c60248201527f696e76616c696420706172656e7420636f6c6c656374696f6e20494400000000604482015290519081900360640190fd5b6000606060066001600160a01b031688878686604051602001808581526020018481526020018381526020018281526020019450505050506040516020818303038152906040526040518082805190602001908083835b602083106113485780518252601f199092019160209182019101611329565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146113a8576040519150601f19603f3d011682016040523d82523d6000602084013e6113ad565b606091505b5091509150816113f3576040805162461bcd60e51b815260206004820152600c60248201526b1958d859190819985a5b195960a21b604482015290519081900360640190fd5b80806020019051604081101561140857600080fd5b50805160209091015190985095505050505b600283066001141561143057600160fe1b851894505b5092979650505050505050565b6000600080516020611ce8833981519152808380099150808283098181820990508181840992508183850993508184840992508183840990508181820982818309905082818209905082818209905082818309915082828609945082858609915082828309915082828509935082848509915082828309915082828309915082828509915082828609945082858609915082828309915082828309915082828609915082828509935082848609945082858609915082828309915082828509935082848509915082828309905082818209905082818209905082818309915082828609945082858509935082848509915082828309915082828309915082828609945082858609915082828309915082828609915082828309915082828309915082828609915082828509935082848509915082828309905082818209905082818309905082818509905082818209905082818209905082818209905082818209905082818309915082828609945082858609915082828609915082828509935082848509915082828509915082828309915082828309905082818309905082818209838182099050838182099050838182099050838182099050838183099150508281830991508282860994508285850993508284850991508282860994508285850993508284860994508285850993508284860994508285860991508282860991508282830991508282850993508284850991508282830991508282860994508285850993508284850991508282850991508282860994508285850993508284860994508285850993508284850991508282830991508282850991508282860994508285860991508282860991508282850993508284860994508285850993508284860994508285850993508284850991508282850991508282830991508282860994508285850993508284850991508282850991508282830991508282860994508285860991508282830990508281820990508281830990508281860990508281820990508281820990508281820990508281820990508281830991508282850993508284860994508285850993508284860994508285860991508282860991508282830991508282830991508282830991508282860991508282850993508284850991508282850991508282830991508282860994508285860991508282860991508282850993508284860994508285860991508282830991508282850993508284860994508285860991508282850993508284860994508285850993508284850991508282850991508282860994508285850993508284850991508282850991508282830991508282830991508282860994508285860991508282830991508282830991508282860991508282850993508284860994508285860991508282860990508281820990508281820990508281830991508282850993508284850991508282860994508285850993508284860994508285850993508284860994508285850993508284850991508282850990508281850991508282830991508282830991508282820991505081818509935081848409925081838509935081848409925081838509935081848509905081818509905081818409925050808284099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808383099392505050565b828054828255906000526020600020908101928215611c1d579160200282015b82811115611c1d578251825591602001919060010190611c02565b50611c29929150611c86565b5090565b828054828255906000526020600020908101928215611c7a579160200282015b82811115611c7a5782518051611c6a918491602090910190611be2565b5091602001919060010190611c4d565b50611c29929150611ca3565b611ca091905b80821115611c295760008155600101611c8c565b90565b611ca091905b80821115611c29576000611cbd8282611cc6565b50600101611ca9565b5080546000825590600052602060002090810190611ce49190611c86565b5056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47706f736974696f6e2049447320636f6e737472756374696f6e206661696c6564213fa265627a7a723058205090b49e20448ee30dd44af1c703069f637e9a0d6051fe05732159c5bc2cc27264736f6c634300050a00326080604052620000387f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b036200007216565b6200006c7f4e2312e0000000000000000000000000000000000000000000000000000000006001600160e01b036200007216565b62000141565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200010457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600360205260409020805460ff19166001179055565b612b3c80620001516000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063a457c2d7116100c3578063d8c55af71161007c578063d8c55af71461056e578063dd62ed3e1461058b578063ddca3f43146105b9578063e03031a6146105c1578063f23a6e61146105de578063f55c79d01461067157610158565b8063a457c2d71461032c578063a9059cbb14610358578063b2016bd414610384578063bc197c811461038c578063d3c9727c146104d0578063d5f15a46146104f957610158565b80633950935111610115578063395093511461026257806340993b261461028e5780634343116a146102b75780635bd9e299146102da57806370a08231146102fe5780639003adfe1461032457610158565b806301ffc9a71461015d578063095ea7b314610198578063164e68de146101c457806316dbd776146101ec57806318160ddd1461022457806323b872dd1461022c575b600080fd5b6101846004803603602081101561017357600080fd5b50356001600160e01b031916610694565b604080519115158252519081900360200190f35b610184600480360360408110156101ae57600080fd5b506001600160a01b0381351690602001356106b3565b6101ea600480360360208110156101da57600080fd5b50356001600160a01b03166106ca565b005b6102126004803603602081101561020257600080fd5b50356001600160a01b0316610838565b60408051918252519081900360200190f35b61021261088c565b6101846004803603606081101561024257600080fd5b506001600160a01b03813581169160208101359091169060400135610892565b6101846004803603604081101561027857600080fd5b506001600160a01b0381351690602001356108e9565b6101ea600480360360608110156102a457600080fd5b5080359060208101359060400135610925565b610212600480360360408110156102cd57600080fd5b5080359060200135610c8b565b6102e2610e62565b604080516001600160a01b039092168252519081900360200190f35b6102126004803603602081101561031457600080fd5b50356001600160a01b0316610e71565b610212610e8c565b6101846004803603604081101561034257600080fd5b506001600160a01b038135169060200135610eaa565b6101846004803603604081101561036e57600080fd5b506001600160a01b038135169060200135610ee6565b6102e2610ef3565b6104b3600480360360a08110156103a257600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156103d557600080fd5b8201836020820111156103e757600080fd5b803590602001918460208302840111600160201b8311171561040857600080fd5b919390929091602081019035600160201b81111561042557600080fd5b82018360208201111561043757600080fd5b803590602001918460208302840111600160201b8311171561045857600080fd5b919390929091602081019035600160201b81111561047557600080fd5b82018360208201111561048757600080fd5b803590602001918460018302840111600160201b831117156104a857600080fd5b509092509050610f02565b604080516001600160e01b03199092168252519081900360200190f35b6101ea600480360360608110156104e657600080fd5b5080359060208101359060400135610f46565b6101ea6004803603604081101561050f57600080fd5b81359190810190604081016020820135600160201b81111561053057600080fd5b82018360208201111561054257600080fd5b803590602001918460208302840111600160201b8311171561056357600080fd5b5090925090506111e2565b6102126004803603602081101561058457600080fd5b5035611897565b610212600480360360408110156105a157600080fd5b506001600160a01b03813581169160200135166118b5565b6102126118e0565b6101ea600480360360208110156105d757600080fd5b50356118e6565b6104b3600480360360a08110156105f457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561063357600080fd5b82018360208201111561064557600080fd5b803590602001918460018302840111600160201b8311171561066657600080fd5b509092509050611c3e565b6102126004803603604081101561068757600080fd5b5080359060200135611c6d565b6001600160e01b03191660009081526003602052604090205460ff1690565b60006106c0338484611e0a565b5060015b92915050565b60006106d461088c565b6106ef6106e084610e71565b6008549063ffffffff611ef616565b816106f657fe5b6001600160a01b0384166000908152600c60205260408120549290910492509061072790839063ffffffff611f4f16565b90508015610833576001600160a01b0383166000908152600c60205260409020829055600d5461075d908263ffffffff611fac16565b600d556005546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b505050506040513d60208110156107e057600080fd5b5051610833576040805162461bcd60e51b815260206004820152601a60248201527f7769746864726177616c207472616e73666572206661696c6564000000000000604482015290519081900360640190fd5b505050565b60008061084361088c565b61084f6106e085610e71565b8161085657fe5b6001600160a01b0385166000908152600c6020526040902054919004915061088590829063ffffffff611f4f16565b9392505050565b60025490565b600061089f848484612006565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546108df9186916108da908663ffffffff611f4f16565b611e0a565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106c09185906108da908663ffffffff611fac16565b60006109318484611c6d565b905081811015610988576040805162461bcd60e51b815260206004820152601e60248201527f6d696e696d756d2062757920616d6f756e74206e6f7420726561636865640000604482015290519081900360640190fd5b600554604080516323b872dd60e01b81523360048201523060248201526044810187905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050506040513d6020811015610a0c57600080fd5b5051610a56576040805162461bcd60e51b815260206004820152601460248201527318dbdcdd081d1c985b9cd9995c8819985a5b195960621b604482015290519081900360640190fd5b6000670de0b6b3a7640000610a7660075487611ef690919063ffffffff16565b81610a7d57fe5b049050610a9581600854611fac90919063ffffffff16565b6008556000610aaa868363ffffffff611f4f16565b600554600480546040805163095ea7b360e01b81526001600160a01b039283169381019390935260248301859052519394509091169163095ea7b3916044808201926020929091908290030181600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b505050506040513d6020811015610b3257600080fd5b5051610b85576040805162461bcd60e51b815260206004820152601a60248201527f617070726f76616c20666f722073706c697473206661696c6564000000000000604482015290519081900360640190fd5b610b8e81612153565b600454600b80546001600160a01b039092169163f242432a9130913391908a908110610bb657fe5b6000918252602082200154604080516001600160e01b031960e088901b1681526001600160a01b03958616600482015293909416602484015260448301526064820188905260a0608483015260a48201819052915160e4808301939282900301818387803b158015610c2757600080fd5b505af1158015610c3b573d6000803e3d6000fd5b5050604080518981526020810186905280820187905290518893503392507f4f62630f51608fc8a7603a9391a5101e58bd7c276139366fc107dc3b67c3dcf89181900360600190a3505050505050565b600b546000908210610cdc576040805162461bcd60e51b81526020600482015260156024820152740d2dcecc2d8d2c840deeae8c6dedaca40d2dcc8caf605b1b604482015290519081900360640190fd5b6060610ce66122e2565b90506000610d07600754670de0b6b3a7640000611f4f90919063ffffffff16565b610d1f86670de0b6b3a764000063ffffffff611ef616565b81610d2657fe5b0490506000828581518110610d3757fe5b602002602001015190506000610d5e670de0b6b3a764000083611ef690919063ffffffff16565b905060005b8451811015610dc957868114610dc1576000858281518110610d8157fe5b60200260200101519050610dbd610da18683611f4f90919063ffffffff16565b610db1858463ffffffff611ef616565b9063ffffffff6124b116565b9250505b600101610d63565b5060008111610e1f576040805162461bcd60e51b815260206004820152601b60248201527f6d7573742068617665206e6f6e2d7a65726f2062616c616e6365730000000000604482015290519081900360640190fd5b610e5782610e4b610e3e84670de0b6b3a764000063ffffffff6124b116565b869063ffffffff611fac16565b9063ffffffff611f4f16565b979650505050505050565b6004546001600160a01b031681565b6001600160a01b031660009081526020819052604090205490565b6000610ea5600d54600854611f4f90919063ffffffff16565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106c09185906108da908663ffffffff611f4f16565b60006106c0338484612006565b6005546001600160a01b031681565b60006001600160a01b03891630148015610f2357506001600160a01b038816155b15610f36575063bc197c8160e01b610f3a565b5060005b98975050505050505050565b6000610f528484610c8b565b905081811115610fa9576040805162461bcd60e51b815260206004820152601c60248201527f6d6178696d756d2073656c6c20616d6f756e7420657863656564656400000000604482015290519081900360640190fd5b600454600b80546001600160a01b039092169163f242432a91339130919088908110610fd157fe5b6000918252602082200154604080516001600160e01b031960e088901b1681526001600160a01b03958616600482015293909416602484015260448301526064820186905260a0608483015260a48201819052915160e4808301939282900301818387803b15801561104257600080fd5b505af1158015611056573d6000803e3d6000fd5b505050506000611079600754670de0b6b3a7640000611f4f90919063ffffffff16565b60075461108d90879063ffffffff611ef616565b8161109457fe5b0490506110ac81600854611fac90919063ffffffff16565b60085560006110c1868363ffffffff611fac16565b90506110cc816124e1565b6005546040805163a9059cbb60e01b81523360048201526024810189905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561112057600080fd5b505af1158015611134573d6000803e3d6000fd5b505050506040513d602081101561114a57600080fd5b5051611196576040805162461bcd60e51b81526020600482015260166024820152751c995d1d5c9b881d1c985b9cd9995c8819985a5b195960521b604482015290519081900360640190fd5b60408051878152602081018490528082018590529051869133917fadcf2a240ed9300d681d9a3f5382b6c1beed1b7e46643e0c7b42cbe6e2d766b49181900360600190a3505050505050565b60008311611237576040805162461bcd60e51b815260206004820152601860248201527f66756e64696e67206d757374206265206e6f6e2d7a65726f0000000000000000604482015290519081900360640190fd5b600b546040805182815260208084028201019091526060918015611265578160200160208202803883390190505b509050600061127261088c565b9050600081156113925783156112b95760405162461bcd60e51b8152600401808060200182810382526032815260200180612a4b6032913960400191505060405180910390fd5b60606112c36122e2565b90506000805b82518110156112ff5760008382815181106112e057fe5b60200260200101519050808310156112f6578092505b506001016112c9565b5060005b825181101561136f5760008261133585848151811061131e57fe5b60200260200101518c611ef690919063ffffffff16565b8161133c57fe5b04905061134f8a8263ffffffff611f4f16565b87838151811061135b57fe5b602090810291909101015250600101611303565b5080611381898663ffffffff611ef616565b8161138857fe5b04925050506114e1565b83156114de57600b5484146113e0576040805162461bcd60e51b815260206004820152600f60248201526e3434b73a103632b733ba341037b33360891b604482015290519081900360640190fd5b6000805b858110156114185760008787838181106113fa57fe5b9050602002013590508083101561140f578092505b506001016113e4565b5060005b858110156114db5760008261144c89898581811061143657fe5b905060200201358b611ef690919063ffffffff16565b8161145357fe5b049050600081116114ab576040805162461bcd60e51b815260206004820152601e60248201527f6d7573742068696e7420612076616c696420646973747269627574696f6e0000604482015290519081900360640190fd5b6114bb898263ffffffff611f4f16565b8683815181106114c757fe5b60209081029190910101525060010161141c565b50505b50845b600554604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561153b57600080fd5b505af115801561154f573d6000803e3d6000fd5b505050506040513d602081101561156557600080fd5b50516115b8576040805162461bcd60e51b815260206004820152601760248201527f66756e64696e67207472616e73666572206661696c6564000000000000000000604482015290519081900360640190fd5b600554600480546040805163095ea7b360e01b81526001600160a01b0392831693810193909352602483018a90525192169163095ea7b3916044808201926020929091908290030181600087803b15801561161257600080fd5b505af1158015611626573d6000803e3d6000fd5b505050506040513d602081101561163c57600080fd5b505161168f576040805162461bcd60e51b815260206004820152601a60248201527f617070726f76616c20666f722073706c697473206661696c6564000000000000604482015290519081900360640190fd5b61169886612153565b6116a23382612658565b60048054604051631759616b60e11b815230928101838152336024830181905260a060448401908152600b805460a486018190526001600160a01b0390961696632eb2c2d6969095939491938b93916064820191608481019160c4909101908790801561172e57602002820191906000526020600020905b81548152602001906001019080831161171a575b50508481038352855181528551602091820191808801910280838360005b8381101561176457818101518382015260200161174c565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b15801561179d57600080fd5b505af11580156117b1573d6000803e3d6000fd5b506000925050505b8351811015611807576117e88482815181106117d157fe5b602002602001015188611f4f90919063ffffffff16565b8482815181106117f457fe5b60209081029190910101526001016117b9565b50336001600160a01b03167fec2dc3e5a3bb9aa0a1deb905d2bd23640d07f107e6ceb484024501aad964a95184836040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561187b578181015183820152602001611863565b50505050905001935050505060405180910390a2505050505050565b600681815481106118a457fe5b600091825260209091200154905081565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60075481565b60606118f06122e2565b90506060815160405190808252806020026020018201604052801561191f578160200160208202803883390190505b509050600061192c61088c565b905060005b835181101561198857816119618686848151811061194b57fe5b6020026020010151611ef690919063ffffffff16565b8161196857fe5b0483828151811061197557fe5b6020908102919091010152600101611931565b50600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156119d457600080fd5b505afa1580156119e8573d6000803e3d6000fd5b505050506040513d60208110156119fe57600080fd5b50519050611a0c3386612754565b600554604080516370a0823160e01b81523060048201529051611a91926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611a5857600080fd5b505afa158015611a6c573d6000803e3d6000fd5b505050506040513d6020811015611a8257600080fd5b5051829063ffffffff611f4f16565b60048054604051631759616b60e11b815230928101838152336024830181905260a060448401908152600b805460a486018190529798506001600160a01b0390951696632eb2c2d69695929492938b939092916064820191608481019160c49091019087908015611b2157602002820191906000526020600020905b815481526020019060010190808311611b0d575b50508481038352855181528551602091820191808801910280838360005b83811015611b57578181015183820152602001611b3f565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b158015611b9057600080fd5b505af1158015611ba4573d6000803e3d6000fd5b50505050336001600160a01b03167f8b4b2c8ebd04c47fc8bce136a85df9b93fcb1f47c8aa296457d4391519d190e78483886040518080602001848152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611c22578181015183820152602001611c0a565b5050505090500194505050505060405180910390a25050505050565b60006001600160a01b038716301415611c5f575063f23a6e6160e01b611c63565b5060005b9695505050505050565b600b546000908210611cbe576040805162461bcd60e51b81526020600482015260156024820152740d2dcecc2d8d2c840deeae8c6dedaca40d2dcc8caf605b1b604482015290519081900360640190fd5b6060611cc86122e2565b90506000611d03670de0b6b3a7640000611ced60075488611ef690919063ffffffff16565b81611cf457fe5b8791900463ffffffff611f4f16565b90506000828581518110611d1357fe5b602002602001015190506000611d3a670de0b6b3a764000083611ef690919063ffffffff16565b905060005b8451811015611d8957868114611d81576000858281518110611d5d57fe5b60200260200101519050611d7d610da18683611fac90919063ffffffff16565b9250505b600101611d3f565b5060008111611ddf576040805162461bcd60e51b815260206004820152601b60248201527f6d7573742068617665206e6f6e2d7a65726f2062616c616e6365730000000000604482015290519081900360640190fd5b610e57611dfa82670de0b6b3a764000063ffffffff6124b116565b610e4b848663ffffffff611fac16565b6001600160a01b038316611e4f5760405162461bcd60e51b8152600401808060200182810382526024815260200180612ae46024913960400191505060405180910390fd5b6001600160a01b038216611e945760405162461bcd60e51b8152600401808060200182810382526022815260200180612a296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082611f05575060006106c4565b82820282848281611f1257fe5b04146108855760405162461bcd60e51b8152600401808060200182810382526021815260200180612a7d6021913960400191505060405180910390fd5b600082821115611fa6576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610885576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03831661204b5760405162461bcd60e51b8152600401808060200182810382526025815260200180612abf6025913960400191505060405180910390fd5b6001600160a01b0382166120905760405162461bcd60e51b8152600401808060200182810382526023815260200180612a066023913960400191505060405180910390fd5b61209b838383612842565b6001600160a01b0383166000908152602081905260409020546120c4908263ffffffff611f4f16565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546120f9908263ffffffff611fac16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600654600019015b600081126122de5760606121856009838154811061217557fe5b90600052602060002001546129a1565b905060005b600a838154811061219757fe5b6000918252602090912001548110156122d357600454600554600a80546001600160a01b03938416936372ce427593169190879081106121d357fe5b9060005260206000200184815481106121e857fe5b90600052602060002001546006878154811061220057fe5b906000526020600020015486896040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b0316815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561228657818101518382015260200161226e565b505050509050019650505050505050600060405180830381600087803b1580156122af57600080fd5b505af11580156122c3573d6000803e3d6000fd5b50506001909201915061218a9050565b50506000190161215b565b5050565b606080600b80549050604051908082528060200260200182016040528015612314578160200160208202803883390190505b50905060005b600b54811015612351573082828151811061233157fe5b6001600160a01b039092166020928302919091019091015260010161231a565b5060048054604080516313849cfd60e21b81529283019081528351604484015283516001600160a01b0390921692634e1273f4928592600b929091829160248101916064909101906020808801910280838360005b838110156123be5781810151838201526020016123a6565b50505050905001838103825284818154815260200191508054801561240257602002820191906000526020600020905b8154815260200190600101908083116123ee575b505094505050505060006040518083038186803b15801561242257600080fd5b505afa158015612436573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561245f57600080fd5b810190808051600160201b81111561247657600080fd5b8201602081018481111561248957600080fd5b81518560208202830111600160201b821117156124a557600080fd5b50909550505050505090565b600082156124d0578160018403816124c557fe5b0460010190506106c4565b8183816124d957fe5b049392505050565b60005b6006548110156122de5760606125006009838154811061217557fe5b905060005b600a838154811061251257fe5b60009182526020909120015481101561264e57600454600554600a80546001600160a01b0393841693639e7212ad931691908790811061254e57fe5b90600052602060002001848154811061256357fe5b90600052602060002001546006878154811061257b57fe5b906000526020600020015486896040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b0316815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156126015781810151838201526020016125e9565b505050509050019650505050505050600060405180830381600087803b15801561262a57600080fd5b505af115801561263e573d6000803e3d6000fd5b5050600190920191506125059050565b50506001016124e4565b6001600160a01b0382166126b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6126bf60008383612842565b6002546126d2908263ffffffff611fac16565b6002556001600160a01b0382166000908152602081905260409020546126fe908263ffffffff611fac16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166127995760405162461bcd60e51b8152600401808060200182810382526021815260200180612a9e6021913960400191505060405180910390fd5b6127a582600083612842565b6001600160a01b0382166000908152602081905260409020546127ce908263ffffffff611f4f16565b6001600160a01b0383166000908152602081905260409020556002546127fa908263ffffffff611f4f16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b0383161561285a5761285a836106ca565b600061286461088c565b905060008115612890576008548290612883908563ffffffff611ef616565b8161288a57fe5b04612892565b825b90506001600160a01b03851615612900576001600160a01b0385166000908152600c60205260409020546128cc908263ffffffff611f4f16565b6001600160a01b0386166000908152600c6020526040902055600d546128f8908263ffffffff611f4f16565b600d55612917565b600854612913908263ffffffff611fac16565b6008555b6001600160a01b03841615612983576001600160a01b0384166000908152600c602052604090205461294f908263ffffffff611fac16565b6001600160a01b0385166000908152600c6020526040902055600d5461297b908263ffffffff611fac16565b600d5561299a565b600854612996908263ffffffff611f4f16565b6008555b5050505050565b6060816040519080825280602002602001820160405280156129cd578160200160208202803883390190505b50905060005b828110156129ff57806001901b8282815181106129ec57fe5b60209081029190910101526001016129d3565b5091905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737363616e6e6f742075736520646973747269627574696f6e2068696e7420616674657220696e697469616c2066756e64696e67536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a723058201aac63dc06a17d8f7ea486dfbf3ed5b1306b107d0d7a9060b6a110567ffb46f864736f6c634300050a0032","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a71461006757806312b4d20c146100a257806352e831dd146100c657806382e90fa014610136578063bc197c8114610220578063f23a6e6114610364575b600080fd5b61008e6004803603602081101561007d57600080fd5b50356001600160e01b0319166103f7565b604080519115158252519081900360200190f35b6100aa610416565b604080516001600160a01b039092168252519081900360200190f35b610134600480360360208110156100dc57600080fd5b810190602081018135600160201b8111156100f657600080fd5b82018360208201111561010857600080fd5b803590602001918460018302840111600160201b8311171561012957600080fd5b509092509050610425565b005b6100aa600480360360e081101561014c57600080fd5b8135916001600160a01b03602082013581169260408301359091169190810190608081016060820135600160201b81111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460208302840111600160201b831117156101b957600080fd5b919390928235926020810135929190606081019060400135600160201b8111156101e257600080fd5b8201836020820111156101f457600080fd5b803590602001918460208302840111600160201b8311171561021557600080fd5b50909250905061079e565b610347600480360360a081101561023657600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561026957600080fd5b82018360208201111561027b57600080fd5b803590602001918460208302840111600160201b8311171561029c57600080fd5b919390929091602081019035600160201b8111156102b957600080fd5b8201836020820111156102cb57600080fd5b803590602001918460208302840111600160201b831117156102ec57600080fd5b919390929091602081019035600160201b81111561030957600080fd5b82018360208201111561031b57600080fd5b803590602001918460018302840111600160201b8311171561033c57600080fd5b509092509050610bd8565b604080516001600160e01b03199092168252519081900360200190f35b610347600480360360a081101561037a57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156103b957600080fd5b8201836020820111156103cb57600080fd5b803590602001918460018302840111600160201b831117156103ec57600080fd5b509092509050610cf7565b6001600160e01b0319166000908152600e602052604090205460ff1690565b600f546001600160a01b031681565b600080606060008585608081101561043c57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561046f57600080fd5b82018360208201111561048157600080fd5b803590602001918460208302840111600160201b831117156104a257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250600360209081527f28b0ef64f7e82d3b26f3fd404bd0151552f792965f39c29ae82c0a78df67af9c805460ff199081166001908117909255630271189760e51b9093527f1b0a8c8743953bd832c9e1d6a5e52d4143b336fe3e4824afb8e5e7621b19f90b805490931617909155600480546001600160a01b03808d166001600160a01b03199283161790925560058054928c16929091169190911790558451999d50979b50929950509135965061059395600695890194509250611be2915050565b50600781905560065460408051828152602080840282010190915260019180156105c7578160200160208202803883390190505b5080516105dc91600991602090910190611be2565b5060005b6006548110156106a557600454600680546000926001600160a01b03169163d42dc0c2918590811061060e57fe5b90600052602060002001546040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561064d57600080fd5b505afa158015610661573d6000803e3d6000fd5b505050506040513d602081101561067757600080fd5b5051600980549482029491925082918490811061069057fe5b600091825260209091200155506001016105e0565b50600181116106fb576040805162461bcd60e51b815260206004820152601860248201527f636f6e646974696f6e73206d7573742062652076616c69640000000000000000604482015290519081900360640190fd5b60065460408051828152602080840282010190915290801561073157816020015b606081526020019060019003908161071c5790505b50805161074691600a91602090910190611c2d565b50600654610755906000610dc3565b600b5481146107955760405162461bcd60e51b8152600401808060200182810382526022815260200180611d086022913960400191505060405180910390fd5b50505050505050565b60008061084b600f60009054906101000a90046001600160a01b03168c8c8c8c8c8c60405160200180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052610e94565b9050336001600160a01b03167f92e0912d3d7f3192cad5c7ae3b47fb97f9c465c1dd12a5c24fd901ddb3905f43828c8c8c8c8c60405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003995090975050505050505050a28415610bca57601080546001600160a01b03191633908117909155604080516323b872dd60e01b8152600481019290925230602483015260448201879052516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b15801561098157600080fd5b505af1158015610995573d6000803e3d6000fd5b505050506040513d60208110156109ab57600080fd5b50506040805163095ea7b360e01b81526001600160a01b038381166004830152602482018890529151918b169163095ea7b3916044808201926020929091908290030181600087803b158015610a0057600080fd5b505af1158015610a14573d6000803e3d6000fd5b505050506040513d6020811015610a2a57600080fd5b505060408051636af8ad2360e11b81526004810187815260248201928352604482018690526001600160a01b0384169263d5f15a4692899289928992606401846020850280828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b158015610aa957600080fd5b505af1158015610abd573d6000803e3d6000fd5b5050604080516370a0823160e01b815230600482015290516001600160a01b038516935063a9059cbb9250339184916370a0823191602480820192602092909190829003018186803b158015610b1257600080fd5b505afa158015610b26573d6000803e3d6000fd5b505050506040513d6020811015610b3c57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b505050506040513d6020811015610bb757600080fd5b5050601080546001600160a01b03191690555b9a9950505050505050505050565b601054604051631759616b60e11b815230600482018181526001600160a01b039093166024830181905260a06044840190815260a484018a90526000943394632eb2c2d69493928d928d928d928d928d928d92906064810190608481019060c4018a60208b0280828437600083820152601f01601f19169091018581038452888152602090810191508990890280828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509b505050505050505050505050600060405180830381600087803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b5063bc197c8160e01b9c9b505050505050505050505050565b601054604051637921219560e11b815230600482018181526001600160a01b0390931660248301819052604483018890526064830187905260a06084840190815260a48401869052600094339463f242432a9493928b928b928b928b929160c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b5063f23a6e6160e01b9a9950505050505050505050565b81610dfc57600554600b90610de1906001600160a01b0316836110ca565b81546001810183556000928352602090922090910155610e90565b818060019003925050600060098381548110610e1457fe5b90600052602060002001549050600a8381548110610e2e57fe5b600091825260208083209091018054600181018255908352908220018390555b81811015610e8d57610e8584610e808560068881548110610e6b57fe5b9060005260206000200154856001901b61110e565b610dc3565b600101610e4e565b50505b5050565b60006060826040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610ed9578181015183820152602001610ec1565b50505050905090810190601f168015610f065780820380516001836020036101000a031916815260200191505b5060408051601f1981840381018252928252602080820180516001600160e01b03166352e831dd60e01b17905281518351606382018082526082909201909516850190910190925295506060945090925090508015610f6c576020820181803883390190505b507f3d3d606380380380913d393d73bebebebebebebebebebebebebebebebebebebe6020820152600160601b308102602d8301527f5af4602a57600080fd5b602d8060366000396000f3363d3d373d3d3d363d73be6041830152870260608201526e5af43d82803e903d91602b57fd5bf360881b6074820152905060005b825181101561103857828181518110610fff57fe5b602001015160f81c60f81b82826063018151811061101957fe5b60200101906001600160f81b031916908160001a905350600101610fea565b50604080513360208083019190915281830188905282518083038401815260609092019092528051908201208251909183018282826000f5955050506001600160a01b0384166110c0576040805162461bcd60e51b815260206004820152600e60248201526d18dc99585d194c8819985a5b195960921b604482015290519081900360640190fd5b5050509392505050565b6040805160609390931b6bffffffffffffffffffffffff19166020808501919091526034808501939093528151808503909301835260549093019052805191012090565b6040805160208082018590528183018490528251808303840181526060909201909252805191012060009060ff81901c151582805b600080516020611ce8833981519152600185089350600080516020611ce88339815191526003600080516020611ce883398151915280878809870908905061118a8161143d565b915080600080516020611ce88339815191528384091415611143578280156111b3575060028206155b806111ca5750821580156111ca5750600282066001145b156111e35781600080516020611ce88339815191520391505b87801561141a5760fe81901c151593506001600160fe1b0316600080516020611ce88339815191526003600080516020611ce883398151915280848509840908915060006112308361143d565b9050848015611240575060028106155b806112575750841580156112575750600281066001145b1561126d57600080516020611ce8833981519152035b82600080516020611ce8833981519152828309146112d2576040805162461bcd60e51b815260206004820152601c60248201527f696e76616c696420706172656e7420636f6c6c656374696f6e20494400000000604482015290519081900360640190fd5b6000606060066001600160a01b031688878686604051602001808581526020018481526020018381526020018281526020019450505050506040516020818303038152906040526040518082805190602001908083835b602083106113485780518252601f199092019160209182019101611329565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146113a8576040519150601f19603f3d011682016040523d82523d6000602084013e6113ad565b606091505b5091509150816113f3576040805162461bcd60e51b815260206004820152600c60248201526b1958d859190819985a5b195960a21b604482015290519081900360640190fd5b80806020019051604081101561140857600080fd5b50805160209091015190985095505050505b600283066001141561143057600160fe1b851894505b5092979650505050505050565b6000600080516020611ce8833981519152808380099150808283098181820990508181840992508183850993508184840992508183840990508181820982818309905082818209905082818209905082818309915082828609945082858609915082828309915082828509935082848509915082828309915082828309915082828509915082828609945082858609915082828309915082828309915082828609915082828509935082848609945082858609915082828309915082828509935082848509915082828309905082818209905082818209905082818309915082828609945082858509935082848509915082828309915082828309915082828609945082858609915082828309915082828609915082828309915082828309915082828609915082828509935082848509915082828309905082818209905082818309905082818509905082818209905082818209905082818209905082818209905082818309915082828609945082858609915082828609915082828509935082848509915082828509915082828309915082828309905082818309905082818209838182099050838182099050838182099050838182099050838183099150508281830991508282860994508285850993508284850991508282860994508285850993508284860994508285850993508284860994508285860991508282860991508282830991508282850993508284850991508282830991508282860994508285850993508284850991508282850991508282860994508285850993508284860994508285850993508284850991508282830991508282850991508282860994508285860991508282860991508282850993508284860994508285850993508284860994508285850993508284850991508282850991508282830991508282860994508285850993508284850991508282850991508282830991508282860994508285860991508282830990508281820990508281830990508281860990508281820990508281820990508281820990508281820990508281830991508282850993508284860994508285850993508284860994508285860991508282860991508282830991508282830991508282830991508282860991508282850993508284850991508282850991508282830991508282860994508285860991508282860991508282850993508284860994508285860991508282830991508282850993508284860994508285860991508282850993508284860994508285850993508284850991508282850991508282860994508285850993508284850991508282850991508282830991508282830991508282860994508285860991508282830991508282830991508282860991508282850993508284860994508285860991508282860990508281820990508281820990508281830991508282850993508284850991508282860994508285850993508284860994508285850993508284860994508285850993508284850991508282850990508281850991508282830991508282830991508282820991505081818509935081848409925081838509935081848409925081838509935081848509905081818509905081818409925050808284099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808383099392505050565b828054828255906000526020600020908101928215611c1d579160200282015b82811115611c1d578251825591602001919060010190611c02565b50611c29929150611c86565b5090565b828054828255906000526020600020908101928215611c7a579160200282015b82811115611c7a5782518051611c6a918491602090910190611be2565b5091602001919060010190611c4d565b50611c29929150611ca3565b611ca091905b80821115611c295760008155600101611c8c565b90565b611ca091905b80821115611c29576000611cbd8282611cc6565b50600101611ca9565b5080546000825590600052602060002090810190611ce49190611c86565b5056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47706f736974696f6e2049447320636f6e737472756374696f6e206661696c6564213fa265627a7a723058205090b49e20448ee30dd44af1c703069f637e9a0d6051fe05732159c5bc2cc27264736f6c634300050a0032","sourceMap":"600:4897:2:-;;;1075:90;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;718:40:20;737:20;-1:-1:-1;;;;;718:18:20;:40;:::i;:::-;231:162:13;263:120;-1:-1:-1;;;;;231:18:13;:162;:::i;:::-;1129:29:2;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;1106:20:2;:52;;-1:-1:-1;;;;;;1106:52:2;-1:-1:-1;;;;;1106:52:2;;;;;;;;;;600:4897;;1442:190:20;1517:25;;;;;;1509:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:33;;;;;;:20;:33;;;;;:40;;-1:-1:-1;;1585:40:20;1621:4;1585:40;;;1442:190::o;600:4897:2:-;;;;;;;;:::o;:::-;;;;;;;","deployedSourceMap":"600:4897:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;600:4897:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:133:20;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;915:133:20;-1:-1:-1;;;;;;915:133:20;;:::i;:::-;;;;;;;;;;;;;;;;;;981:51:2;;;:::i;:::-;;;;-1:-1:-1;;;;;981:51:2;;;;;;;;;;;;;;1171:1389;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1171:1389:2;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1171:1389:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1171:1389:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1171:1389:2;;-1:-1:-1;1171:1389:2;-1:-1:-1;1171:1389:2;:::i;:::-;;4104:1391;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4104:1391:2;;;-1:-1:-1;;;;;4104:1391:2;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4104:1391:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4104:1391:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4104:1391:2;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4104:1391:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4104:1391:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4104:1391:2;;-1:-1:-1;4104:1391:2;-1:-1:-1;4104:1391:2;:::i;3699:398::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;3699:398:2;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3699:398:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3699:398:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3699:398:2;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3699:398:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3699:398:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3699:398:2;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3699:398:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3699:398:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;3699:398:2;;-1:-1:-1;3699:398:2;-1:-1:-1;3699:398:2;:::i;:::-;;;;-1:-1:-1;;;;;;3699:398:2;;;;;;;;;;;;;;3336:357;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;3336:357:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3336:357:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3336:357:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;3336:357:2;;-1:-1:-1;3336:357:2;-1:-1:-1;3336:357:2;:::i;915:133:20:-;-1:-1:-1;;;;;;1008:33:20;985:4;1008:33;;;:20;:33;;;;;;;;;915:133::o;981:51:2:-;;;-1:-1:-1;;;;;981:51:2;;:::o;1171:1389::-;1255:36;1305:23;1342:30;1386:9;1419:8;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;1408:66:2;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1408:66:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1408:66:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1408:66:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;1485:20:2;1408:66;1485:42;;;;:49;;-1:-1:-1;;1485:49:2;;;1530:4;1485:49;;;;;;-1:-1:-1;;;1544:164:2;;;;:171;;;;;;;;;1726:17;:38;;-1:-1:-1;;;;;1726:38:2;;;-1:-1:-1;;;;;;1726:38:2;;;;;;;1774:15;:34;;;;;;;;;;;;;;;1818:28;;1241:233;;-1:-1:-1;1241:233:2;;-1:-1:-1;1408:66:2;;-1:-1:-1;;1408:66:2;;;-1:-1:-1;1818:28:2;;:12;;:28;;;-1:-1:-1;1818:28:2;-1:-1:-1;1818:28:2;;-1:-1:-1;;1818:28:2:i;:::-;-1:-1:-1;1856:3:2;:10;;;1949:12;:19;1938:31;;;;;;;;;;;;;;;;1907:1;;1938:31;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;1938:31:2;-1:-1:-1;1918:51:2;;;;:17;;:51;;;;;;:::i;:::-;-1:-1:-1;1984:6:2;1979:259;2000:12;:19;1996:23;;1979:259;;;2064:17;;2102:12;:15;;2040:21;;-1:-1:-1;;;;;2064:17:2;;:37;;2115:1;;2102:15;;;;;;;;;;;;;;2064:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2064:54:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2064:54:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2064:54:2;2188:17;:20;;2132:42;;;;2064:54;;-1:-1:-1;2064:54:2;;2206:1;;2188:20;;;;;;;;;;;;;;;:39;-1:-1:-1;2021:3:2;;1979:259;;;;2280:1;2255:22;:26;2247:63;;;;;-1:-1:-1;;;2247:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;2353:12;:19;2337:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2321:52:2;;;;:13;;:52;;;;;;:::i;:::-;-1:-1:-1;2420:12:2;:19;2383:69;;2449:1;2383:36;:69::i;:::-;2470:11;:18;:44;;2462:91;;;;-1:-1:-1;;;2462:91:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1171:1389;;;;;;;:::o;4104:1391::-;4413:23;4452:47;4539:199;4560:20;;;;;;;;;-1:-1:-1;;;;;4560:20:2;4583:9;4622:17;4657:15;4690:12;;4720:3;4594:143;;;;;;-1:-1:-1;;;;;4594:143:2;-1:-1:-1;;;;;4594:143:2;;;;;;-1:-1:-1;;;;;4594:143:2;-1:-1:-1;;;;;4594:143:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;4594:143:2;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4594:143:2;;;4539:12;:199::i;:::-;4452:296;;4808:10;-1:-1:-1;;;;;4763:205:2;;4832:23;4869:17;4900:15;4929:12;;4955:3;4763:205;;;;-1:-1:-1;;;;;4763:205:2;-1:-1:-1;;;;;4763:205:2;;;;;;-1:-1:-1;;;;;4763:205:2;-1:-1:-1;;;;;4763:205:2;;;;;;-1:-1:-1;;;;;4763:205:2;-1:-1:-1;;;;;4763:205:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;4763:205:2;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;4763:205:2;;;;-1:-1:-1;4763:205:2;;-1:-1:-1;;;;;;;;4763:205:2;4983:16;;4979:469;;5015:13;:26;;-1:-1:-1;;;;;;5015:26:2;5031:10;5015:26;;;;;;5055:69;;;-1:-1:-1;;;5055:69:2;;;;;;;;;5104:4;5055:69;;;;;;;;;;;-1:-1:-1;;;;;5055:28:2;;;;;:69;;;;;;;;;;;;;;5015:13;5055:28;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;5055:69:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5055:69:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;5138:71:2;;;-1:-1:-1;;;5138:71:2;;-1:-1:-1;;;;;5138:71:2;;;;;;;;;;;;;;;:23;;;;;;:71;;;;;5055:69;;5138:71;;;;;;;;-1:-1:-1;5138:23:2;:71;;;5:2:-1;;;;30:1;27;20:12;5:2;5138:71:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5138:71:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;5223:66:2;;;-1:-1:-1;;;5223:66:2;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5223:34:2;;;;;5258:12;;5272:16;;;;5223:66;;5272:16;5138:71;5223:66;;;5272:16;5223:66;1:33:-1;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;;5223:66:2;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5223:66:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5348:48:2;;;-1:-1:-1;;;5348:48:2;;5390:4;5348:48;;;;;;-1:-1:-1;;;;;5303:32:2;;;-1:-1:-1;5303:32:2;;-1:-1:-1;5336:10:2;;5303:32;;5348:33;;:48;;;;;;;;;;;;;;;5303:32;5348:48;;;5:2:-1;;;;30:1;27;20:12;5:2;5348:48:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5348:48:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5348:48:2;5303:94;;;-1:-1:-1;;;;;;5303:94:2;;;;;;;-1:-1:-1;;;;;5303:94:2;;;;;;;;;;;;;;;;;;;;5348:48;;5303:94;;;;;;;-1:-1:-1;5303:94:2;;;;5:2:-1;;;;30:1;27;20:12;5:2;5303:94:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5303:94:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;5411:13:2;:26;;-1:-1:-1;;;;;;5411:26:2;;;4979:469;5465:23;4104:1391;-1:-1:-1;;;;;;;;;;4104:1391:2:o;3699:398::-;4004:13;;3937:100;;-1:-1:-1;;;3937:100:2;;3997:4;3937:100;;;;;;-1:-1:-1;;;;;4004:13:2;;;3937:100;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3955:10:2;;3937:51;;3997:4;4004:13;4019:3;;3937:100;;4024:6;;;;4032:4;;;;3937:100;;;;;;;;;;;4019:3;3937:100;;;;4019:3;3937:100;1:33:-1;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;3937:100:2;;;;;;;;;;;;;-1:-1:-1;3937:100:2;;;;;;;1:33:-1;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;3937:100:2;;;;;;;;;;;-1:-1:-1;3937:100:2;;;;;1:33:-1;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;;3937:100:2;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3937:100:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;4054:36:2;3699:398;-1:-1:-1;;;;;;;;;;;;3699:398:2:o;3336:357::-;3607:13;;3545:93;;-1:-1:-1;;;3545:93:2;;3600:4;3545:93;;;;;;-1:-1:-1;;;;;3607:13:2;;;3545:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3563:10:2;;3545:46;;3600:4;3607:13;3545:93;;;;3633:4;;3545:93;;;;;3633:4;3545:93;;3633:4;3545:93;1:33:-1;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;;3545:93:2;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3545:93:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;3655:31:2;3336:357;-1:-1:-1;;;;;;;;;;3336:357:2:o;2566:764::-;2682:19;2679:147;;2758:15;;2717:11;;2734:60;;-1:-1:-1;;;;;2758:15:2;2775:18;2734:23;:60::i;:::-;27:10:-1;;39:1;23:18;;45:23;;-1:-1;2717:78:2;;;;;;;;;;;2809:7;;2679:147;2836:16;;;;;;;;2863:21;2887:17;2905:14;2887:33;;;;;;;;;;;;;;;;2863:57;;2931:13;2945:14;2931:29;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;2931:54:2;;;;;;;;;;2995:329;3015:16;3011:1;:20;2995:329;;;3052:261;3106:14;3138:161;3185:18;3225:12;3238:14;3225:28;;;;;;;;;;;;;;;;3280:1;3275;:6;;3138:25;:161::i;:::-;3052:36;:261::i;:::-;3033:3;;2995:329;;;;2566:764;;;;:::o;195:1262:0:-;290:14;316:24;394:8;343: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;343:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;343:60:0;;;-1:-1:-1;;26:21;;;22:32;;6:49;;343:60:0;;;49:4:-1;25:18;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;444:18:0;;434:34;;465:2;444:23;;434:34;;;;;;;;;;;;;;;;;;343:60;-1:-1:-1;413:18:0;;-1:-1:-1;434:34:0;;-1:-1:-1;444:23:0;-1:-1:-1;434:34:0;;;;;;;21:6:-1;;104:10;434:34:0;87::-1;135:17;;-1:-1;434:34:0;-1:-1:-1;543:66:0;520:4;509:16;;502:108;-1:-1:-1;;;668:7:0;664:42;;641:4;630:16;;623:84;761:66;738:4;727:16;;720:108;882:41;;859:4;848:16;;841:83;-1:-1:-1;;;955:3:0;944:15;;937:107;509:16;-1:-1:-1;;1064:100:0;1084:11;:18;1080:1;:22;1064:100;;;1139:11;1151:1;1139:14;;;;;;;;;;;;;;;;1123:5;1134:1;1129:2;:6;1123:13;;;;;;;;;;;:30;-1:-1:-1;;;;;1123:30:0;;;;;;;;-1:-1:-1;1104:3:0;;1064:100;;;-1:-1:-1;1199:33:0;;;1210:10;1199:33;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;1199:33:0;;;;;;;1189:44;;;;;;1276:12;;1189:44;;1311:16;;1189:44;1276:12;1311:16;1174:12;1348:27;1338:37;-1:-1:-1;;;;;;;;1411:20:0;;1403:47;;;;;-1:-1:-1;;;1403:47:0;;;;;;;;;;;;-1:-1:-1;;;1403:47:0;;;;;;;;;;;;;;;195:1262;;;;;;;;:::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;600:4897:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;600:4897:2;;;-1:-1:-1;600:4897:2;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;600:4897:2;;;-1:-1:-1;600:4897:2;:::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 { Create2CloneFactory } from \"./Create2CloneFactory.sol\";\nimport { FixedProductMarketMaker, FixedProductMarketMakerData } from \"./FixedProductMarketMaker.sol\";\nimport { ERC1155TokenReceiver } from \"@gnosis.pm/conditional-tokens-contracts/contracts/ERC1155/ERC1155TokenReceiver.sol\";\n\n\ncontract FPMMDeterministicFactory is Create2CloneFactory, FixedProductMarketMakerData, ERC1155TokenReceiver {\n    event FixedProductMarketMakerCreation(\n        address indexed creator,\n        FixedProductMarketMaker fixedProductMarketMaker,\n        ConditionalTokens conditionalTokens,\n        IERC20 collateralToken,\n        bytes32[] conditionIds,\n        uint fee\n    );\n\n    FixedProductMarketMaker public implementationMaster;\n    address internal currentFunder;\n\n    constructor() public {\n        implementationMaster = new FixedProductMarketMaker();\n    }\n\n    function cloneConstructor(bytes calldata consData) external {\n        (\n            ConditionalTokens _conditionalTokens,\n            IERC20 _collateralToken,\n            bytes32[] memory _conditionIds,\n            uint _fee\n        ) = abi.decode(consData, (ConditionalTokens, IERC20, bytes32[], uint));\n\n        _supportedInterfaces[_INTERFACE_ID_ERC165] = true;\n        _supportedInterfaces[\n            ERC1155TokenReceiver(0).onERC1155Received.selector ^\n            ERC1155TokenReceiver(0).onERC1155BatchReceived.selector\n        ] = true;\n\n        conditionalTokens = _conditionalTokens;\n        collateralToken = _collateralToken;\n        conditionIds = _conditionIds;\n        fee = _fee;\n\n        uint atomicOutcomeSlotCount = 1;\n        outcomeSlotCounts = new uint[](conditionIds.length);\n        for (uint i = 0; i < conditionIds.length; i++) {\n            uint outcomeSlotCount = conditionalTokens.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        require(positionIds.length == atomicOutcomeSlotCount, \"position IDs construction failed!?\");\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 onERC1155Received(\n        address operator,\n        address from,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    )\n        external\n        returns (bytes4)\n    {\n        ConditionalTokens(msg.sender).safeTransferFrom(address(this), currentFunder, id, value, data);\n        return this.onERC1155Received.selector;\n    }\n\n    function onERC1155BatchReceived(\n        address operator,\n        address from,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    )\n        external\n        returns (bytes4)\n    {\n        ConditionalTokens(msg.sender).safeBatchTransferFrom(address(this), currentFunder, ids, values, data);\n        return this.onERC1155BatchReceived.selector;\n    }\n\n\n    function create2FixedProductMarketMaker(\n        uint saltNonce,\n        ConditionalTokens conditionalTokens,\n        IERC20 collateralToken,\n        bytes32[] calldata conditionIds,\n        uint fee,\n        uint initialFunds,\n        uint[] calldata distributionHint\n    )\n        external\n        returns (FixedProductMarketMaker)\n    {\n        FixedProductMarketMaker fixedProductMarketMaker = FixedProductMarketMaker(\n            create2Clone(address(implementationMaster), saltNonce, abi.encode(\n                conditionalTokens,\n                collateralToken,\n                conditionIds,\n                fee\n            ))\n        );\n        emit FixedProductMarketMakerCreation(\n            msg.sender,\n            fixedProductMarketMaker,\n            conditionalTokens,\n            collateralToken,\n            conditionIds,\n            fee\n        );\n\n        if (initialFunds > 0) {\n            currentFunder = msg.sender;\n            collateralToken.transferFrom(msg.sender, address(this), initialFunds);\n            collateralToken.approve(address(fixedProductMarketMaker), initialFunds);\n            fixedProductMarketMaker.addFunding(initialFunds, distributionHint);\n            fixedProductMarketMaker.transfer(msg.sender, fixedProductMarketMaker.balanceOf(address(this)));\n            currentFunder = address(0);\n        }\n\n        return fixedProductMarketMaker;\n    }\n}\n","compiler":{"name":"solc","version":"0.5.10+commit.5a6ea5b1.Emscripten.clang"},"networks":{"1":{"events":{"0x92e0912d3d7f3192cad5c7ae3b47fb97f9c465c1dd12a5c24fd901ddb3905f43":{"anonymous":false,"inputs":[{"indexed":true,"name":"creator","type":"address"},{"indexed":false,"name":"fixedProductMarketMaker","type":"address"},{"indexed":false,"name":"conditionalTokens","type":"address"},{"indexed":false,"name":"collateralToken","type":"address"},{"indexed":false,"name":"conditionIds","type":"bytes32[]"},{"indexed":false,"name":"fee","type":"uint256"}],"name":"FixedProductMarketMakerCreation","type":"event","signature":"0x92e0912d3d7f3192cad5c7ae3b47fb97f9c465c1dd12a5c24fd901ddb3905f43"},"0x3d2b821286d97aa9d35330d87a82f7b548b9737b10e2d1ba59994edfd50e9d2b":{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"clone","type":"address"}],"name":"CloneCreated","type":"event","signature":"0x3d2b821286d97aa9d35330d87a82f7b548b9737b10e2d1ba59994edfd50e9d2b"},"0xec2dc3e5a3bb9aa0a1deb905d2bd23640d07f107e6ceb484024501aad964a951":{"anonymous":false,"inputs":[{"indexed":true,"name":"funder","type":"address"},{"indexed":false,"name":"amountsAdded","type":"uint256[]"},{"indexed":false,"name":"sharesMinted","type":"uint256"}],"name":"FPMMFundingAdded","type":"event","signature":"0xec2dc3e5a3bb9aa0a1deb905d2bd23640d07f107e6ceb484024501aad964a951"},"0x8baabc14b3d9f411b07b5a4c14fc6e12f2bc261be2d89da0840d48243ab056e1":{"anonymous":false,"inputs":[{"indexed":true,"name":"funder","type":"address"},{"indexed":false,"name":"amountsRemoved","type":"uint256[]"},{"indexed":false,"name":"sharesBurnt","type":"uint256"}],"name":"FPMMFundingRemoved","type":"event","signature":"0x8baabc14b3d9f411b07b5a4c14fc6e12f2bc261be2d89da0840d48243ab056e1"},"0xf4be957977a10be6a30d662255828df028f4b18f21d6774140bdc96c2bf300a4":{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"investmentAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensBought","type":"uint256"}],"name":"FPMMBuy","type":"event","signature":"0xf4be957977a10be6a30d662255828df028f4b18f21d6774140bdc96c2bf300a4"},"0x728a7aff2d166d753c6a40a36be24a55f33ada4ffc2f81d62f40d0bef007d84e":{"anonymous":false,"inputs":[{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"returnAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensSold","type":"uint256"}],"name":"FPMMSell","type":"event","signature":"0x728a7aff2d166d753c6a40a36be24a55f33ada4ffc2f81d62f40d0bef007d84e"},"0x8b4b2c8ebd04c47fc8bce136a85df9b93fcb1f47c8aa296457d4391519d190e7":{"anonymous":false,"inputs":[{"indexed":true,"name":"funder","type":"address"},{"indexed":false,"name":"amountsRemoved","type":"uint256[]"},{"indexed":false,"name":"collateralRemovedFromFeePool","type":"uint256"},{"indexed":false,"name":"sharesBurnt","type":"uint256"}],"name":"FPMMFundingRemoved","type":"event","signature":"0x8b4b2c8ebd04c47fc8bce136a85df9b93fcb1f47c8aa296457d4391519d190e7"},"0x4f62630f51608fc8a7603a9391a5101e58bd7c276139366fc107dc3b67c3dcf8":{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"investmentAmount","type":"uint256"},{"indexed":false,"name":"feeAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensBought","type":"uint256"}],"name":"FPMMBuy","type":"event","signature":"0x4f62630f51608fc8a7603a9391a5101e58bd7c276139366fc107dc3b67c3dcf8"},"0xadcf2a240ed9300d681d9a3f5382b6c1beed1b7e46643e0c7b42cbe6e2d766b4":{"anonymous":false,"inputs":[{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"returnAmount","type":"uint256"},{"indexed":false,"name":"feeAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensSold","type":"uint256"}],"name":"FPMMSell","type":"event","signature":"0xadcf2a240ed9300d681d9a3f5382b6c1beed1b7e46643e0c7b42cbe6e2d766b4"}},"links":{},"address":"0x89023DEb1d9a9a62fF3A5ca8F23Be8d87A576220","transactionHash":"0x3dcf6344be196cb8a3bf20d4680ee911bc1f200cc997c2c1c0c1c0ef3c9bc7f2"},"4":{"events":{"0x92e0912d3d7f3192cad5c7ae3b47fb97f9c465c1dd12a5c24fd901ddb3905f43":{"anonymous":false,"inputs":[{"indexed":true,"name":"creator","type":"address"},{"indexed":false,"name":"fixedProductMarketMaker","type":"address"},{"indexed":false,"name":"conditionalTokens","type":"address"},{"indexed":false,"name":"collateralToken","type":"address"},{"indexed":false,"name":"conditionIds","type":"bytes32[]"},{"indexed":false,"name":"fee","type":"uint256"}],"name":"FixedProductMarketMakerCreation","type":"event","signature":"0x92e0912d3d7f3192cad5c7ae3b47fb97f9c465c1dd12a5c24fd901ddb3905f43"},"0x3d2b821286d97aa9d35330d87a82f7b548b9737b10e2d1ba59994edfd50e9d2b":{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"clone","type":"address"}],"name":"CloneCreated","type":"event","signature":"0x3d2b821286d97aa9d35330d87a82f7b548b9737b10e2d1ba59994edfd50e9d2b"},"0xec2dc3e5a3bb9aa0a1deb905d2bd23640d07f107e6ceb484024501aad964a951":{"anonymous":false,"inputs":[{"indexed":true,"name":"funder","type":"address"},{"indexed":false,"name":"amountsAdded","type":"uint256[]"},{"indexed":false,"name":"sharesMinted","type":"uint256"}],"name":"FPMMFundingAdded","type":"event","signature":"0xec2dc3e5a3bb9aa0a1deb905d2bd23640d07f107e6ceb484024501aad964a951"},"0x8baabc14b3d9f411b07b5a4c14fc6e12f2bc261be2d89da0840d48243ab056e1":{"anonymous":false,"inputs":[{"indexed":true,"name":"funder","type":"address"},{"indexed":false,"name":"amountsRemoved","type":"uint256[]"},{"indexed":false,"name":"sharesBurnt","type":"uint256"}],"name":"FPMMFundingRemoved","type":"event","signature":"0x8baabc14b3d9f411b07b5a4c14fc6e12f2bc261be2d89da0840d48243ab056e1"},"0xf4be957977a10be6a30d662255828df028f4b18f21d6774140bdc96c2bf300a4":{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"investmentAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensBought","type":"uint256"}],"name":"FPMMBuy","type":"event","signature":"0xf4be957977a10be6a30d662255828df028f4b18f21d6774140bdc96c2bf300a4"},"0x728a7aff2d166d753c6a40a36be24a55f33ada4ffc2f81d62f40d0bef007d84e":{"anonymous":false,"inputs":[{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"returnAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensSold","type":"uint256"}],"name":"FPMMSell","type":"event","signature":"0x728a7aff2d166d753c6a40a36be24a55f33ada4ffc2f81d62f40d0bef007d84e"},"0x8b4b2c8ebd04c47fc8bce136a85df9b93fcb1f47c8aa296457d4391519d190e7":{"anonymous":false,"inputs":[{"indexed":true,"name":"funder","type":"address"},{"indexed":false,"name":"amountsRemoved","type":"uint256[]"},{"indexed":false,"name":"collateralRemovedFromFeePool","type":"uint256"},{"indexed":false,"name":"sharesBurnt","type":"uint256"}],"name":"FPMMFundingRemoved","type":"event","signature":"0x8b4b2c8ebd04c47fc8bce136a85df9b93fcb1f47c8aa296457d4391519d190e7"},"0x4f62630f51608fc8a7603a9391a5101e58bd7c276139366fc107dc3b67c3dcf8":{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"investmentAmount","type":"uint256"},{"indexed":false,"name":"feeAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensBought","type":"uint256"}],"name":"FPMMBuy","type":"event","signature":"0x4f62630f51608fc8a7603a9391a5101e58bd7c276139366fc107dc3b67c3dcf8"},"0xadcf2a240ed9300d681d9a3f5382b6c1beed1b7e46643e0c7b42cbe6e2d766b4":{"anonymous":false,"inputs":[{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"returnAmount","type":"uint256"},{"indexed":false,"name":"feeAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensSold","type":"uint256"}],"name":"FPMMSell","type":"event","signature":"0xadcf2a240ed9300d681d9a3f5382b6c1beed1b7e46643e0c7b42cbe6e2d766b4"}},"links":{},"address":"0x0fB4340432e56c014fa96286de17222822a9281b","transactionHash":"0xf7b283543fe32ccf311b932091b433a5685ca34e2f81210f8f543a18e6b80881"}},"schemaVersion":"3.0.16","updatedAt":"2020-03-16T20:30:10.706Z","devdoc":{"methods":{"supportsInterface(bytes4)":{"details":"See `IERC165.supportsInterface`.     * Time complexity O(1), guaranteed to always use less than 30 000 gas."}}},"userdoc":{"methods":{}}}