0x608060405234801561001057600080fd5b5061001c600033610075565b6100467ffc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c33610075565b6100707f0ac90c257048ef1c3e387c26d4a99bde06894efbcbff862dc1885c3a9319308a33610075565b610121565b61007f8282610083565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661007f576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556100dd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610e44806101306000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806391d148541161007157806391d1485414610178578063a217fddf1461018b578063d547741f14610193578063d8f4b6fd146101a6578063ec56a373146101cd578063ecd002611461022157600080fd5b806301ffc9a7146100b95780630d7f9bdd146100e1578063248a9ca31461010c5780632f2ff15d1461013d57806336568abe1461015257806359c914c114610165575b600080fd5b6100cc6100c73660046109b0565b610248565b60405190151581526020015b60405180910390f35b6100f46100ef366004610a99565b61027f565b6040516001600160a01b0390911681526020016100d8565b61012f61011a366004610b4f565b60009081526020819052604090206001015490565b6040519081526020016100d8565b61015061014b366004610b68565b610413565b005b610150610160366004610b68565b61043d565b610150610173366004610b94565b6104c0565b6100cc610186366004610b68565b6105c1565b61012f600081565b6101506101a1366004610b68565b6105ea565b61012f7f0ac90c257048ef1c3e387c26d4a99bde06894efbcbff862dc1885c3a9319308a81565b6102026101db366004610b4f565b6001602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b0390931683529015156020830152016100d8565b61012f7ffc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c81565b60006001600160e01b03198216637965db0b60e01b148061027957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60007ffc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c6102ab8161060f565b600089815260016020526040902080546001600160a01b03166102e15760405163392d164960e01b815260040160405180910390fd5b8054600160a01b900460ff1661030a57604051637e464d2960e11b815260040160405180910390fd5b60008a8a8a60405160200161032193929190610c09565b60408051601f1981840301815291905280516020909101208254909150600090610354906001600160a01b03168361061c565b60405163da89716560e01b81529091506001600160a01b0382169063da8971659061038f9033908f908f908f908f908f908f90600401610c72565b600060405180830381600087803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b50505050806001600160a01b03167f4683ab9afa03be7dbdf30911e359daed68c4cf01b2e6d5602f00f7678b5331128c8c6040516103fc929190610cde565b60405180910390a29b9a5050505050505050505050565b60008281526020819052604090206001015461042e8161060f565b61043883836106b9565b505050565b6001600160a01b03811633146104b25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6104bc828261073d565b5050565b7f0ac90c257048ef1c3e387c26d4a99bde06894efbcbff862dc1885c3a9319308a6104ea8161060f565b6000848152600160205260409020546001600160a01b03161561052357604051630370d82960e51b8152600481018590526024016104a9565b6040805180820182526001600160a01b0380861682528415156020808401918252600089815260019091528490209251835491511515600160a01b026001600160a81b03199092169216919091171790555184907f59bae85bf937c19399576ca9568b91725715f04204093a97e75106292b852946906105b39086906001600160a01b0391909116815260200190565b60405180910390a250505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6000828152602081905260409020600101546106058161060f565b610438838361073d565b61061981336107a2565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166102795760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016104a9565b6106c382826105c1565b6104bc576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556106f93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61074782826105c1565b156104bc576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6107ac82826105c1565b6104bc576107b9816107fb565b6107c483602061080d565b6040516020016107d5929190610d0c565b60408051601f198184030181529082905262461bcd60e51b82526104a991600401610d81565b60606102796001600160a01b03831660145b6060600061081c836002610daa565b610827906002610dc9565b67ffffffffffffffff81111561083f5761083f6109da565b6040519080825280601f01601f191660200182016040528015610869576020820181803683370190505b509050600360fc1b8160008151811061088457610884610de1565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106108b3576108b3610de1565b60200101906001600160f81b031916908160001a90535060006108d7846002610daa565b6108e2906001610dc9565b90505b600181111561095a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061091657610916610de1565b1a60f81b82828151811061092c5761092c610de1565b60200101906001600160f81b031916908160001a90535060049490941c9361095381610df7565b90506108e5565b5083156109a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104a9565b9392505050565b6000602082840312156109c257600080fd5b81356001600160e01b0319811681146109a957600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a0157600080fd5b813567ffffffffffffffff80821115610a1c57610a1c6109da565b604051601f8301601f19908116603f01168101908282118183101715610a4457610a446109da565b81604052838152866020858801011115610a5d57600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114610a9457600080fd5b919050565b600080600080600080600060e0888a031215610ab457600080fd5b87359650602088013567ffffffffffffffff80821115610ad357600080fd5b610adf8b838c016109f0565b975060408a0135915080821115610af557600080fd5b610b018b838c016109f0565b9650610b0f60608b01610a7d565b955060808a0135945060a08a0135915080821115610b2c57600080fd5b50610b398a828b016109f0565b92505060c0880135905092959891949750929550565b600060208284031215610b6157600080fd5b5035919050565b60008060408385031215610b7b57600080fd5b82359150610b8b60208401610a7d565b90509250929050565b600080600060608486031215610ba957600080fd5b83359250610bb960208501610a7d565b915060408401358015158114610bce57600080fd5b809150509250925092565b60005b83811015610bf4578181015183820152602001610bdc565b83811115610c03576000848401525b50505050565b83815260008351610c21816020850160208801610bd9565b80830190508351610c39816020840160208801610bd9565b0160200195945050505050565b60008151808452610c5e816020860160208601610bd9565b601f01601f19169290920160200192915050565b600060018060a01b03808a16835260e06020840152610c9460e084018a610c46565b8381036040850152610ca6818a610c46565b9050818816606085015286608085015283810360a0850152610cc88187610c46565b925050508260c083015298975050505050505050565b604081526000610cf16040830185610c46565b8281036020840152610d038185610c46565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610d44816017850160208801610bd9565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351610d75816028840160208801610bd9565b01602801949350505050565b6020815260006109a96020830184610c46565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610dc457610dc4610d94565b500290565b60008219821115610ddc57610ddc610d94565b500190565b634e487b7160e01b600052603260045260246000fd5b600081610e0657610e06610d94565b50600019019056fea2646970667358221220481c8c4618505eb7dda039a96504fd5947c87e216e074bffc02d9cdd139ab3fa64736f6c634300080d0033