60806040526b019d971e4fe8401e74000000600155606460045560c8600555600060065534801561002f57600080fd5b50600080546001600160a01b0319163390811782556040519091907f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a735908290a33360008181526007602090815260408083208054600160ff1991821681179092557ffd21a1ac9a14dff647460ce8ad2ccecb794a59a4cfbb8678b1f9900a6a99551f805490911682179055546002835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36116f6806101046000396000f3fe6080604052600436106101dc5760003560e01c806367ffa82811610102578063a6f9dae111610095578063cec10c1111610064578063cec10c11146105bb578063d7ad21ac146105db578063dd62ed3e14610618578063f89532a21461065e57600080fd5b8063a6f9dae114610545578063a9059cbb14610565578063ac4dcb7614610585578063acb2ad6f146105a557600080fd5b80638ebfc796116100d15780638ebfc796146104b857806392a39d91146104d857806395d89b41146104f85780639a44b9e31461052557600080fd5b806367ffa8281461042457806370a082311461044457806379cc67901461047a578063893d20e81461049a57600080fd5b8063304561bb1161017a578063470624021161014957806347062402146103b957806349df728c146103cf57806350431ce4146103ef57806365fe050e1461040457600080fd5b8063304561bb14610325578063313ce5671461035d5780633eb193e21461037957806342966c681461039957600080fd5b806318160ddd116101b657806318160ddd146102ae57806323b872dd146102cd5780632ac7b824146102ed5780632b14ca561461030f57600080fd5b806301e88208146101e857806306fdde031461023d578063095ea7b31461027e57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b50610221610203366004611406565b60076020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152015b60405180910390f35b34801561024957600080fd5b5060408051808201909152600f81526e56616d7069726520536c617965727360881b60208201525b6040516102349190611421565b34801561028a57600080fd5b5061029e61029936600461146f565b610674565b6040519015158152602001610234565b3480156102ba57600080fd5b506001545b604051908152602001610234565b3480156102d957600080fd5b5061029e6102e8366004611499565b6106e1565b3480156102f957600080fd5b5061030d610308366004611406565b61079e565b005b34801561031b57600080fd5b506102bf60055481565b34801561033157600080fd5b50600a54610345906001600160a01b031681565b6040516001600160a01b039091168152602001610234565b34801561036957600080fd5b5060405160128152602001610234565b34801561038557600080fd5b5061030d610394366004611406565b610867565b3480156103a557600080fd5b5061030d6103b43660046114d5565b6108f1565b3480156103c557600080fd5b506102bf60045481565b3480156103db57600080fd5b5061030d6103ea366004611406565b6108ff565b3480156103fb57600080fd5b5061030d610a3f565b34801561041057600080fd5b5061030d61041f366004611406565b610ac1565b34801561043057600080fd5b5061030d61043f366004611406565b610b8b565b34801561045057600080fd5b506102bf61045f366004611406565b6001600160a01b031660009081526002602052604090205490565b34801561048657600080fd5b5061030d61049536600461146f565b610c15565b3480156104a657600080fd5b506000546001600160a01b0316610345565b3480156104c457600080fd5b5061030d6104d33660046114fc565b610cc9565b3480156104e457600080fd5b50600854610345906001600160a01b031681565b34801561050457600080fd5b50604080518082019091526004815263534c415960e01b6020820152610271565b34801561053157600080fd5b50600954610345906001600160a01b031681565b34801561055157600080fd5b5061030d610560366004611406565b610d44565b34801561057157600080fd5b5061029e61058036600461146f565b610dc9565b34801561059157600080fd5b5061030d6105a0366004611406565b610ddd565b3480156105b157600080fd5b506102bf60065481565b3480156105c757600080fd5b5061030d6105d6366004611533565b610e67565b3480156105e757600080fd5b506105fb6105f6366004611499565b610f74565b604080519283526001600160a01b03909116602083015201610234565b34801561062457600080fd5b506102bf61063336600461155f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561066a57600080fd5b506102bf61271081565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106cf9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526003602090815260408083203384529091528120548211156107525760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b60448201526064015b60405180910390fd5b6001600160a01b0384166000908152600360209081526040808320338452909152812080548492906107859084906115a8565b90915550610796905084848461109c565b949350505050565b6000546001600160a01b031633146107c85760405162461bcd60e51b8152600401610749906115bb565b6001600160a01b0381166107ee5760405162461bcd60e51b8152600401610749906115e8565b6001600160a01b038116600090815260076020526040902054610100900460ff166108455760405162461bcd60e51b81526020600482015260076024820152664e6f7420414d4d60c81b6044820152606401610749565b6001600160a01b03166000908152600760205260409020805461ff0019169055565b6000546001600160a01b031633146108915760405162461bcd60e51b8152600401610749906115bb565b6001600160a01b0381166108b75760405162461bcd60e51b81526004016107499061160e565b600980546001600160a01b039092166001600160a01b0319909216821790556000908152600760205260409020805460ff19166001179055565b6108fb33826112bf565b5050565b6000546001600160a01b031633146109295760405162461bcd60e51b8152600401610749906115bb565b6001600160a01b03811661094f5760405162461bcd60e51b81526004016107499061160e565b6040516370a0823160e01b81523060048201526000906001600160a01b0383169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c4919061162c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a339190611645565b9050806108fb57600080fd5b6000546001600160a01b03163314610a695760405162461bcd60e51b8152600401610749906115bb565b604051600090339047908381818185875af1925050503d8060008114610aab576040519150601f19603f3d011682016040523d82523d6000602084013e610ab0565b606091505b5050905080610abe57600080fd5b50565b6000546001600160a01b03163314610aeb5760405162461bcd60e51b8152600401610749906115bb565b6001600160a01b038116610b115760405162461bcd60e51b8152600401610749906115e8565b6001600160a01b038116600090815260076020526040902054610100900460ff1615610b655760405162461bcd60e51b8152602060048201526003602482015262414d4d60e81b6044820152606401610749565b6001600160a01b03166000908152600760205260409020805461ff001916610100179055565b6000546001600160a01b03163314610bb55760405162461bcd60e51b8152600401610749906115bb565b6001600160a01b038116610bdb5760405162461bcd60e51b81526004016107499061160e565b600880546001600160a01b039092166001600160a01b0319909216821790556000908152600760205260409020805460ff19166001179055565b6001600160a01b0382166000908152600360209081526040808320338452909152902054811115610c815760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401610749565b6001600160a01b038216600090815260036020908152604080832033845290915281208054839290610cb49084906115a8565b90915550610cc4905082826112bf565b505050565b6000546001600160a01b03163314610cf35760405162461bcd60e51b8152600401610749906115bb565b6001600160a01b038216610d195760405162461bcd60e51b8152600401610749906115e8565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d6e5760405162461bcd60e51b8152600401610749906115bb565b600080546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610dd633848461109c565b9392505050565b6000546001600160a01b03163314610e075760405162461bcd60e51b8152600401610749906115bb565b6001600160a01b038116610e2d5760405162461bcd60e51b81526004016107499061160e565b600a80546001600160a01b039092166001600160a01b0319909216821790556000908152600760205260409020805460ff19166001179055565b6000546001600160a01b03163314610e915760405162461bcd60e51b8152600401610749906115bb565b6109c4831115610ed65760405162461bcd60e51b815260206004820152601060248201526f084eaf2408ccaca40a8dede4090d2ced60831b6044820152606401610749565b6109c4821115610f1c5760405162461bcd60e51b81526020600482015260116024820152700a6cad8d8408ccaca40a8dede4090d2ced607b1b6044820152606401610749565b6109c4811115610f665760405162461bcd60e51b81526020600482015260156024820152740a8e4c2dce6cccae4408ccaca40a8dede4090d2ced605b1b6044820152606401610749565b600492909255600555600655565b6001600160a01b038316600090815260076020526040812054819060ff1680610fb557506001600160a01b03841660009081526007602052604090205460ff165b15610fc557506000905080611094565b6001600160a01b038416600090815260076020526040902054610100900460ff16611067576001600160a01b038516600090815260076020526040902054610100900460ff1661103b57612710600654846110209190611662565b61102a9190611679565b600a546001600160a01b031661108f565b6127106004548461104c9190611662565b6110569190611679565b6009546001600160a01b031661108f565b612710600554846110789190611662565b6110829190611679565b6008546001600160a01b03165b915091505b935093915050565b60006001600160a01b0383166110e55760405162461bcd60e51b815260206004820152600e60248201526d16995c9bc8149958da5c1a595b9d60921b6044820152606401610749565b600082116111055760405162461bcd60e51b81526004016107499061169b565b6001600160a01b0384166000908152600260205260409020548211156111645760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610749565b6001600160a01b0384166000908152600260205260408120805484929061118c9084906115a8565b9091555060009050806111a0868686610f74565b909250905060006111b183866115a8565b9050600081116111d35760405162461bcd60e51b81526004016107499061169b565b6001600160a01b03808716600081815260026020526040908190208054850190555190918916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112299085815260200190565b60405180910390a382156112b25760006001600160a01b03831661124d573061124f565b825b6001600160a01b03808216600081815260026020526040908190208054890190555192935091908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112a89088815260200190565b60405180910390a3505b5060019695505050505050565b60006001600160a01b0383166112e75760405162461bcd60e51b8152600401610749906115e8565b600082116113075760405162461bcd60e51b81526004016107499061169b565b6001600160a01b0383166000908152600260205260409020548211156113665760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610749565b6001600160a01b0383166000908152600260205260408120805484929061138e9084906115a8565b9250508190555081600160008282546113a791906115a8565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016106cf565b80356001600160a01b038116811461140157600080fd5b919050565b60006020828403121561141857600080fd5b610dd6826113ea565b600060208083528351808285015260005b8181101561144e57858101830151858201604001528201611432565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561148257600080fd5b61148b836113ea565b946020939093013593505050565b6000806000606084860312156114ae57600080fd5b6114b7846113ea565b92506114c5602085016113ea565b9150604084013590509250925092565b6000602082840312156114e757600080fd5b5035919050565b8015158114610abe57600080fd5b6000806040838503121561150f57600080fd5b611518836113ea565b91506020830135611528816114ee565b809150509250929050565b60008060006060848603121561154857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561157257600080fd5b61157b836113ea565b9150611589602084016113ea565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106db576106db611592565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b6020808252600c908201526b5a65726f204164647265737360a01b604082015260600190565b6020808252600490820152635a65726f60e01b604082015260600190565b60006020828403121561163e57600080fd5b5051919050565b60006020828403121561165757600080fd5b8151610dd6816114ee565b80820281158282048414176106db576106db611592565b60008261169657634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600b908201526a16995c9bc8105b5bdd5b9d60aa1b60408201526060019056fea2646970667358221220c0bf36ee288afb20bd6a9943fc2c3b8cb635c68b90190c7e33e1b1bccfb613c464736f6c63430008140033